私のListView
アイテムは、以下のコンポーネントで構成されています。TextView
そして、その下には、ImageView
-like
の1つがあります。Android:1つのListViewアイテムのImageViewを変更すると、他のListViewアイテムの同じImageViewが変更されますか?
like
をクリックすると、like
ImageView
を灰色から青色に変更したいと考えています。
like
をクリックすると、like
ImageView
はグレーからブルーに変わります。しかし、対応するListView
アイテムだけでなく、リスト内のすべての3番目のアイテムについて - リストにある最初のアイテムのlike
をクリックすると、4番目、7番目、10番目のアイテムlike
ImageView
からの変更灰色から青まで。
ファイルroot element
の私のpost_list_item.xml
には、次のように指定しました。android:descendantFocusability="blocksDescendants"
ですが、どちらでも役に立ちません。
私の質問は - 私は何をすべきかを持っていないので、私はlike
をクリックしたとき、私は他のリスト項目に影響を与えずに青に灰色からlike
ImageView
を変更することができるだろうということ?
public class CustomListAdapter extends BaseAdapter {
LayoutInflater inflater;
ArrayList<Post> list;
public CustomListAdapter(PostActivity postActivity, ArrayList<Post> list) {
inflater = LayoutInflater.from(postActivity);
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = inflater.inflate(R.layout.post_list_item, parent, false);
holder = new ViewHolder();
holder.tvPost = (TextView) convertView.findViewById(R.id.tvPost);
holder.ivLike = (ImageView) convertView.findViewById(R.id.ivLike);
holder.tvLikes = (TextView) convertView.findViewById(R.id.tvLikeCount);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Post post = list.get(position);
holder.tvPost.setText(post.getPost());
holder.tvLikes.setText(post.getLiked());
holder.ivLike.setOnClickListener(mClickListener);
holder.ivLike.setTag(position);
return convertView;
}
private View.OnClickListener mClickListener = new View.OnClickListener() {
public void onClick(View v) {
int pos = (Integer) v.getTag();
Post post = (Post) list.get(pos);
post.setIvLike(v);
CustomListAdapter.this.notifyDataSetChanged();
}
};
static class ViewHolder
{
TextView tvPost ;
TextView tvLikes;
ImageView ivLike;
}
}
Post.java
public class Post {
String post;
String liked;
public void setIvLike(View view){
if(view.isActivated())
view.setActivated(false);
else
view.setActivated(true);
}
public String getPost() {
return post;
}
public void setPost(String post) {
this.post= post;
}
public String getLiked() {
return liked;
}
public void setLiked(String liked) {
this.liked = liked;
}
}
あなたより。私は今週よりこのフォーム鉱石で苦労して、ついにそれが働いています。 – Nikolaj