我試圖在自定義適配器中顯示所有問題。我也設置了upvote和downvote的箭頭。該問題以自定義形式很好地顯示在 。問題是,當我單擊列表中任何元素的upvote按鈕時,最後一項的upvote功能就完成了。 我需要對點擊該按鈕的特定問題進行投票表決。爲了檢查它,我在upvote按鈕中保留了一個敬酒,以便它顯示該元素的 問題,但結果是僅顯示最後一個項目。如何在自定義列表視圖中使用個別佈局的按鈕
代碼是在這裏
public class CustomForumAdapter extends ArrayAdapter {
List<Question> mList;
Context mContext;
LayoutInflater inflater;
public CustomForumAdapter(Context context, List<Question> list) {
super(context, R.layout.design_forum, list);
mContext = context;
mList = list;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
inflater = LayoutInflater.from(mContext);
Holder holder = null;
if (convertView == null) {
holder=new Holder();
convertView = inflater.inflate(R.layout.design_forum, parent, false);
holder.upVote = (ImageButton) convertView.findViewById(R.id.upVote);
holder.downVote = (ImageButton) convertView.findViewById(R.id.downVote);
holder.timeAsked = (TextView) convertView.findViewById(R.id.timeAsked);
holder.asker = (TextView) convertView.findViewById(R.id.asker);
holder.mainAnswer = (TextView) convertView.findViewById(R.id.mainAnswer);
holder.mainQuestion = (TextView) convertView.findViewById(R.id.mainQuestion);
holder.rating = (TextView) convertView.findViewById(R.id.rating);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
holder.upVote.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.v("adsl", "upvote");
}
});
holder.downVote.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
holder.mainQuestion.setText(mList.get(position).getMainQuestion());
holder.mainAnswer.setText(mList.get(position).getMainAnswer());
holder.asker.setText(mList.get(position).getAsker());
holder.timeAsked.setText(mList.get(position).getTime());
holder.rating.setText(mList.get(position).getRating() + "");
return convertView;
}
class Holder {
private ImageButton upVote, downVote;
private TextView timeAsked, asker, mainQuestion, mainAnswer, rating;
}
@Override
public int getCount() {
return mList.size();
}
@Override
public Question getItem(int position) {
return mList.get(position);
}
@Override
public long getItemId(int position) {
return super.getItemId(position);
}
@Override
public int getPosition(Object item) {
return super.getPosition(item);
}
定的更新:我一直在實際評分的一部分存在。我還保留了新的onclick監聽器。但是,請你簡單說一下你想說什麼。 (我的問題模型有mainQuestion,mainAnswer,提問者,時間和評級)
第二次更新:我再次編輯了這個問題,並使用了查看持有人這次。剩下的最後一件事是單個項目的單個按鈕點擊。我該怎麼做呢?
的[自定義適配器列表視圖(http://stackoverflow.com/questions/8166497/custom-adapter可能的複製-for-list-view) –
你怎麼能說它是重複的?我的問題是使用佈局中的單個按鈕單擊 –
嘗試在getView()中將setTag(位置)添加到ImageButton中。在OnClickListener()內部,使用getTag()返回位置並更新mList中的相應項目,然後調用notifyDataSetChanged()。我有一個關於ListView的博客:http://programandroidlistview.blogspot.com/ 有關如何做的示例,希望它有幫助! –