【发布时间】:2014-08-15 16:11:38
【问题描述】:
我想知道是否可以在 onListItemClick 中添加逻辑\区分视图? 我有一个包含多个视图的 listFragment,并且想要执行不同的操作。我试图在我的视图上使用 .isPressed() 方法,但没有成功。
这样做的正确方法是什么。 -谢谢。
根据标记答案的建议,我在我的 CustomArrayAdapter 中实现了以下代码,并且一切正常。我有一个 ListFragment 实现了单元格的 onListItemClick 和同一单元格内的可点击 imagesViews。希望这可以帮助下一个人。
public class ZAdapter extends ArrayAdapter<HashMap<String, String>>{
protected static final String TAG = "myLog";
Context context;
ArrayList<HashMap<String,String>> myListOfMaps;
public ZAdapter(Context context, int textViewResourceId, ArrayList<HashMap<String, String>> myListOfMaps) {
super(context, textViewResourceId, myListOfMaps);
// TODO Auto-generated constructor stub
this.context=context;
this.myListOfMaps = myListOfMaps;
}
public class MyViewHolder
{
ImageView editImage;
TextView tvTitle;
TextView tvSubTitle;
TextView tvRepEmail;
TextView tvRepCell;
public MyViewHolder(View v)
{
editImage = (ImageView) v.findViewById(R.id.row_icon);
tvTitle = (TextView) v.findViewById(R.id.row_title);
tvSubTitle = (TextView) v.findViewById(R.id.row_subTitle);
tvRepEmail = (TextView) v.findViewById(R.id.tvRepEmail);
tvRepCell = (TextView) v.findViewById(R.id.tvRepCell);
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final int index=position;
View row = convertView;
MyViewHolder holder = null;
if(row==null){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.row, parent, false);
holder = new MyViewHolder(row);
row.setTag(holder);
}else{
holder = (MyViewHolder) row.getTag();
}
holder.editImage.setImageResource(R.drawable.edit_img);holder.editImage.setTag("goEdit");
holder.tvTitle.setText(myListOfMaps.get(position).get("prod"));
holder.tvSubTitle.setText(myListOfMaps.get(position).get("dist"));
holder.tvRepEmail.setText(myListOfMaps.get(position).get("repEmail"));
holder.tvRepCell.setText(myListOfMaps.get(position).get("repPhone"));
holder.editImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.d(TAG, "***************** getView() *********called"+index);
}
});
return row;
}
}
-谢谢你
【问题讨论】:
-
点击监听器应该在适配器中而不是在 ListItemClick 监听器中
标签: java android android-listview android-listfragment