Java 使用SetTag方法选择ListView项 setListAdapter(新的MyAdapter(这个,android.R.layout.simple\u列表项目), R.id.textView1, (字符串[])myArr.toArray(新字符串[]{})); } 类MyAdapter扩展了ArrayAdapter{ 最终整数,其中; 公共MyAdapter(上下文、int资源、, int textViewResourceId,字符串[]字符串){ super(上下文、资源、textViewResourceId、字符串); //TODO自动生成的构造函数存根 } @凌驾 公共视图getView(int位置、视图转换视图、视图组父视图){ int=位置; LayoutFlater充气器=(LayoutFlater)getSystemService(Context.LAYOUT\u充气器\u服务); 视图行=充气机。充气(R.layout.custom_视图,父视图,false); TextView tv=(TextView)row.findViewById(R.id.textView1); ImageView iv=(ImageView)row.findViewById(R.id.imageView1); ToggleButton tb=(ToggleButton)row.findViewById(R.id.toggleButton1); tv.setTag(位置); iv.设置标签(位置); tb.setTag(位置); tv.setText(myArr.get(position.toString()); tb.setOnClickListener(新的OnClickListener(){ @凌驾 公共void onClick(视图v){ if(tb.isChecked()){ which=(整数)tb.getTag(); }否则{ } } }); 返回行; } } }
您好,我正在尝试使用setTag视图方法来检测按下了哪些项。我的布局由一个列表组成,每行包含一个文本字段、一个切换按钮和一个图像视图。我想更改包含按下按钮的行的图像。我已经走了这么远,我被困在如何继续的问题上。我能得到一些帮助吗?你可以简单地将位置传递给你的Java 使用SetTag方法选择ListView项 setListAdapter(新的MyAdapter(这个,android.R.layout.simple\u列表项目), R.id.textView1, (字符串[])myArr.toArray(新字符串[]{})); } 类MyAdapter扩展了ArrayAdapter{ 最终整数,其中; 公共MyAdapter(上下文、int资源、, int textViewResourceId,字符串[]字符串){ super(上下文、资源、textViewResourceId、字符串); //TODO自动生成的构造函数存根 } @凌驾 公共视图getView(int位置、视图转换视图、视图组父视图){ int=位置; LayoutFlater充气器=(LayoutFlater)getSystemService(Context.LAYOUT\u充气器\u服务); 视图行=充气机。充气(R.layout.custom_视图,父视图,false); TextView tv=(TextView)row.findViewById(R.id.textView1); ImageView iv=(ImageView)row.findViewById(R.id.imageView1); ToggleButton tb=(ToggleButton)row.findViewById(R.id.toggleButton1); tv.setTag(位置); iv.设置标签(位置); tb.setTag(位置); tv.setText(myArr.get(position.toString()); tb.setOnClickListener(新的OnClickListener(){ @凌驾 公共void onClick(视图v){ if(tb.isChecked()){ which=(整数)tb.getTag(); }否则{ } } }); 返回行; } } },java,android,android-listview,Java,Android,Android Listview,您好,我正在尝试使用setTag视图方法来检测按下了哪些项。我的布局由一个列表组成,每行包含一个文本字段、一个切换按钮和一个图像视图。我想更改包含按下按钮的行的图像。我已经走了这么远,我被困在如何继续的问题上。我能得到一些帮助吗?你可以简单地将位置传递给你的getView(最终int位置,视图转换视图,视图组父视图)。只需将其设置为最终版本并直接访问它,而无需进行标记 但是,为了处理android提供的可滚动视图,您应该使用视图标记 setListAdapter(new MyAd
getView(最终int位置,视图转换视图,视图组父视图)
。只需将其设置为最终版本并直接访问它,而无需进行标记
但是,为了处理android提供的可滚动视图,您应该使用视图标记
setListAdapter(new MyAdapter(this, android.R.layout.simple_list_item_1,
R.id.textView1,
(String[]) myArr.toArray(new String[]{})));
}
class MyAdapter extends ArrayAdapter<String>{
final int which;
public MyAdapter(Context context, int resource,
int textViewResourceId, String[] string) {
super(context, resource, textViewResourceId, string);
// TODO Auto-generated constructor stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int which=position;
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.custom_view, parent,false);
TextView tv = (TextView) row.findViewById(R.id.textView1);
ImageView iv = (ImageView) row.findViewById(R.id.imageView1);
ToggleButton tb = (ToggleButton) row.findViewById(R.id.toggleButton1);
tv.setTag(position);
iv.setTag(position);
tb.setTag(position);
tv.setText(myArr.get(position).toString());
tb.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(tb.isChecked()){
which=(Integer) tb.getTag();
}else{
}
}
});
return row;
}
}
}
class MyAdapter扩展了ArrayAdapter{
最终整数,其中;
ArrayList mListImageStates=新的ArrayList();
公共MyAdapter(上下文、int资源、,
int textViewResourceId,字符串[]字符串){
super(上下文、资源、textViewResourceId、字符串);
对于(int i=0;i如何根据位置更改imageview的内容setimage方法只接受drawable参数,不接受位置然后,必须留下一个包含listview每行状态的布尔数组列表。在该视图上的onClick中,更改布尔值,然后调用notifyDataSetChanged()。在适配器中进行以下if(statusArraylist.get(position))并基于此值更改您的imageviewmmm好的,我迷路了这对我来说有点新鲜:D我可能应该去买本书没关系。我会编辑我的答案:)哦,谢谢:D我会处理这个问题
class MyAdapter extends ArrayAdapter<String>{
final int which;
ArrayList<Boolean> mListImageStates = new ArrayList<Boolean>();
public MyAdapter(Context context, int resource,
int textViewResourceId, String[] string) {
super(context, resource, textViewResourceId, string);
for(int i = 0; i<string.length;i++)
{
mListImageStates.add(new Boolean(false));
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int which=position;
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ChildViewHolder holder = new ChildViewHolder();
if(convertView == null){
convertView = inflater.inflate(R.layout.custom_view, parent,false);
holder.mTv = (TextView) row.findViewById(R.id.textView1);
holder.mIv = (ImageView) row.findViewById(R.id.imageView1);
holder.mTb = (ToggleButton) row.findViewById(R.id.toggleButton1);
convertView.setTag(holder)}
else
{
holder = (ChildViewHolder) convertView.getTag();
}
holder.mTv.setText(myArr.get(position).toString());
holder.mTb.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
boolean listState = mListImageStates.get(position);
mListImageStates.set(position,new Boolean(!listState));
notifyDataSetChanged();
}});
if(mListImageStates.get(position) == false)
{
//TODO
}else
{
//TODO
}
return convertView;
}
class ChildViewHolder
{
public TextView mTv;
public ImageView mIv;
public ToggleButton mTb;
}