我有一个ListView,其中包含从外部数据库获取的几个条目。每个条目都有一个图像按钮和其他对象。 我想知道列表条目的位置,用户点击了图像按钮。
是否有可能特别关注用户点击
的巫婆对象this.getALlEntrysListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
try {
JSONObject entryClicked = jsonArray.getJSONObject(position);
?此代码位于我的MainActivity类中。
我在Adapter类中设置了每个条目的特定内容。
只有当用户点击图像按钮时,获取jsonArray位置的另一种可能性是什么?
这是我的Adapter类:
public class GetAllEntrysListViewAdapter extends BaseAdapter {
private JSONArray dataArray;
private Activity activity;
private static LayoutInflater inflater = null;
public GetAllEntrysListViewAdapter(JSONArray jsonArray, Activity a) {
this.dataArray = jsonArray;
this.activity = a;
inflater = (LayoutInflater)this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return this.dataArray.length();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//set up convert view if it is not null
ListCell cell;
if (convertView == null) {
convertView = inflater.inflate(R.layout.get_all_entry_list_view_cell, null);
cell = new ListCell();
cell.likes = (TextView) convertView.findViewById(R.id.listViewLikes);
cell.note = (TextView) convertView.findViewById(R.id.listViewNote);
cell.img = (ImageView) convertView.findViewById(R.id.listViewImg);
cell.likeButton = (ImageButton) convertView.findViewById(R.id.likeButton);
convertView.setTag(cell);
}
else {
cell = (ListCell)convertView.getTag();
}
//change data of cell
try {
JSONObject jsonObject = this.dataArray.getJSONObject(position);
cell.likes.setText("Likes: "+ jsonObject.getString("likes"));
cell.note.setText(jsonObject.getString("note"));
String img = jsonObject.getString("image");
if (img.equals("img")) {
cell.img.setImageResource(R.drawable.logo);
}
}
catch (JSONException e) {
e.printStackTrace();
}
return convertView;
}
private class ListCell {
private TextView likes;
private TextView note;
private ImageView img;
public ImageButton likeButton;
}
答案 0 :(得分:1)
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RelativeLayout parent = (RelativeLayout)v.getParent();
int position = listView.getPositionForView(parent);
// position in listview
}
});
答案 1 :(得分:0)
只有在获得jsonArray的位置时,另一种可能性是什么? 用户点击图像按钮?
您必须致电setOnClickListener
和ImageButton
。特别重要的是使用ImageButton
position
cell.likeButton.setTag(position);
cell.likeButton.setOnClickListener(...);
当触发onClick
时,检索代表位置的tag
,并通过它检索数据集中的条目