我想点击片段列表视图的每个按钮。
意味着当我点击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;
}
}
答案 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();
}
}