我有一张listview
,每张图片都有textview
。
我希望在点击整行时获得文本的值。
下面的代码表现得很奇怪。我得到的是随机行的值,而不是单击的行。
我没有弄错。 任何帮助将不胜感激。
我这样做,:
public static class LazyAdapter extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader;
public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.list_row, null);
title = (TextView)vi.findViewById(R.id.title); // title
ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image); // thumb image
HashMap<String, String> song = new HashMap<String, String>();
song = data.get(position);
// Setting all values in listview
title.setText(song.get(Meida_listActivity.KEY_TITLE));
imageLoader.DisplayImage(song.get(Meida_listActivity.KEY_THUMB_URL), thumb_image);
vi.setOnClickListener( new View.OnClickListener()
{
public void onClick(View v)
{
String listValue = (String) title.getText();
System.out.println("this is value of string ::: :::: " + listValue);
}
});
return vi;
}
}
答案 0 :(得分:10)
你也可以尝试实现点击列表视图并获得这样的文字!希望它有效..
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
TextView text = (TextView) view.findViewById(R.id.title);
String lst_txt = text.getText().toString().trim();
System.out.println("this is value of string ::: :::: " + lst_txt);
}
});
答案 1 :(得分:1)
在OnClickListener
将代码更改为:
vi.setOnClickListener( new View.OnClickListener()
{
public void onClick(View v)
{
String listValue = (String) data.get(position).get(Meida_listActivity.KEY_TITLE);
System.out.println("this is value of string ::: :::: " + listValue);
}
});
这样你就可以确保引用正确的行。
答案 2 :(得分:1)
可变数据的类型数据是ArrayList
HashMap<String, String> _hashMap = (HashMap<String, String>) data.get(position);
String _test = _hashMap.get("Text").toString();
答案 3 :(得分:0)
vi.setOnClickListener( new View.OnClickListener()
{
public void onClick(View v)
{
title = (TextView)v.findViewById(R.id.title);
String listValue = title.getText().toString();
System.out.println("this is value of string ::: :::: " + listValue);
}
});
return vi;
答案 4 :(得分:0)
添加以下行listView.setOnItemClickListener(this);
和覆盖onItemClick
方法。根据位置(第三个参数)回溯对象。
答案 5 :(得分:0)
将此侦听器用于Activity oncreate方法
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> av, View arg1, int index,
long arg3) {
// Perform Action here.....
String value = av.getItemAtPosition(index).toString();
}
});