如何在片段中制作Onclick列表中的每个按钮

时间:2015-10-07 06:34:25

标签: android

我想点击片段列表视图的每个按钮。

意味着当我点击Ram前面的按钮然后文本Ram应该反映在片段联系人中。如果我点击Holly前面的按钮,那么Holly应该反映在联系人中。为此我应该做什么。这是我的代码

课堂聊天::

public class Chat extends ListFragment implements OnClickListener {

    ViewHolder viewHolder;
    Context mContext;
    ArrayList<HashMap<String, String>> list;

    SimpleAdapter adapter;
    String[] names = new String[] { "Ram", "Abhi", "Rohit", "Holly", "James",
            "Hana", "Jack", "Ram" };
    Integer[] imageId = new Integer[] { R.drawable.ic_launcher,
            R.drawable.ic_launcher, R.drawable.ic_launcher,
            R.drawable.ic_launcher, R.drawable.ic_launcher,
            R.drawable.ic_launcher, R.drawable.ic_launcher,
            R.drawable.ic_launcher,

    };

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        List<HashMap<String, String>> aList = new ArrayList<HashMap<String, String>>();

        for (int i = 0; i < names.length; i++) {
            HashMap<String, String> hm = new HashMap<String, String>();
            hm.put("txt", "   " + names[i]);
            hm.put("flag", Integer.toString(imageId[i]));
            aList.add(hm);
        }

        String[] from = { "flag", "txt" };

        int[] to = { R.id.flag, R.id.txt };

        SimpleAdapter adapter = new SimpleAdapter(getActivity()
                .getBaseContext(), aList, R.layout.chatlistitems, from, to);

        setListAdapter(adapter);

        viewHolder = new ViewHolder();
        viewHolder.button = (Button) container.findViewById(R.id.sendCh);
        viewHolder.button.setOnClickListener(this);

        return super.onCreateView(inflater, container, savedInstanceState);
    }

    static class ViewHolder {
        ViewHolder viewHolder;
        Button button;
    }

    @Override
    public void onClick(View v) {
        viewHolder.button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {


                Fragment fragment = new Contacts();
                FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.r1, fragment);
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();

            }
        });

    }
}

和Contacts.jav :::

public class Contacts extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.contacts, container, false);

        return rootView;
    }

}

2 个答案:

答案 0 :(得分:1)

为listview使用自定义适配器

示例自定义适配器

public class MyPerformanceArrayAdapter extends ArrayAdapter<String> {
  private final Activity context;
  private final String[] names;

  static class ViewHolder {
    public TextView text;
    public ImageView image;
  }

  public MyPerformanceArrayAdapter(Activity context, String[] names) {
    super(context, R.layout.rowlayout, names);
    this.context = context;
    this.names = names;
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    View rowView = convertView;
    // reuse views
    if (rowView == null) {
      LayoutInflater inflater = context.getLayoutInflater();
      rowView = inflater.inflate(R.layout.rowlayout, null);
      // configure view holder
      ViewHolder viewHolder = new ViewHolder();
      viewHolder.text = (TextView) rowView.findViewById(R.id.TextView01);
      viewHolder.image = (ImageView) rowView
          .findViewById(R.id.ImageView01);
      rowView.setTag(viewHolder);
    }

    // fill data
    ViewHolder holder = (ViewHolder) rowView.getTag();
    String s = names[position];
    holder.text.setText(s);
    if (s.startsWith("Windows7") || s.startsWith("iPhone")
        || s.startsWith("Solaris")) {
      holder.image.setImageResource(R.drawable.no);
    } else {
      holder.image.setImageResource(R.drawable.ok);
    }

    return rowView;
  }
} 

答案 1 :(得分:0)

将位置设置为按钮上的标记

int position = view.getTag();
Log.v("Clicked row value",names[position]);

并在onclick方法中将标记作为

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;

public class A3 {
public static void main(String[] args) throws IOException {

    BufferedReader reader1 = new BufferedReader(new java.io.FileReader(
            "src/Source/A3_data"));

    PrintWriter duplicatewriter = new PrintWriter(
            "src/Source/A3_out_double", "UTF-8");
    PrintWriter tripleduplicatewriter = new PrintWriter(
            "src/Source/A3_out_tripple", "UTF-8");

    LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
    String line = reader1.readLine();
    while (line != null) {

        String[] words = line.split(" ");
        int count = 0;

        while (count < words.length) {
            String key = words[count];
            Integer value = map.getOrDefault(key, 0) + 1;

            map.put(key, value);
            count++;
        }
        line = reader1.readLine();
    }

    for (Entry<String, Integer> entry : map.entrySet()) {
        if (entry.getValue() == 2)
            duplicatewriter.println(entry.getKey());

        if (entry.getValue() == 3)
            tripleduplicatewriter.println(entry.getKey());

    }
    duplicatewriter.close();
    tripleduplicatewriter.close();
}
}