Android 修复代码自定义列表视图
我有一门课:Android 修复代码自定义列表视图,android,Android,我有一门课: public class custumkiemtra extends ArrayAdapter<Cauhoi>{ Context context; int resource; List<Cauhoi> ch; public custumkiemtra(Context context, int resource, List<Cauhoi> ch) { super(context, resource,
public class custumkiemtra extends ArrayAdapter<Cauhoi>{
Context context;
int resource;
List<Cauhoi> ch;
public custumkiemtra(Context context, int resource, List<Cauhoi> ch) {
super(context, resource, ch);
this.context = context;
this.resource = resource;
this.ch = ch;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final RadioButton SDA,SDB,SDC,SDD;
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View viewrow = inflater.inflate(R.layout.custumkiemtra,parent,false);
TextView ndch = (TextView)viewrow.findViewById(R.id.cauhoi);
final Button ndA = (Button)viewrow.findViewById(R.id.DA);
final Button ndB = (Button)viewrow.findViewById(R.id.DB);
final Button ndC = (Button)viewrow.findViewById(R.id.DC);
final Button ndD = (Button)viewrow.findViewById(R.id.DD);
SDA = (RadioButton) viewrow.findViewById(R.id.SUADA);
SDB = (RadioButton) viewrow.findViewById(R.id.SUADB);
SDC = (RadioButton) viewrow.findViewById(R.id.SUADC);
SDD = (RadioButton) viewrow.findViewById(R.id.SUADD);
SDA.setEnabled(false);
SDB.setEnabled(false);
SDC.setEnabled(false);
SDD.setEnabled(false);
final Cauhoi getch = ch.get(position);
ndch.setText("Cau "+ String.valueOf(getch.get_id()) +": " + getch.getNoidung_cauhoi());
ndA.setText(getch.getNoidung_traloi1());
ndB.setText(getch.getNoidung_traloi2());
ndC.setText(getch.getNoidung_traloi3());
ndD.setText(getch.getNoidung_traloi4());
ndA.setTag(getch.get_id());
ndB.setTag(getch.get_id());
ndC.setTag(getch.get_id());
ndD.setTag(getch.get_id());
ndA.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ndA.setBackgroundResource(R.drawable.nutdapanchon);
ndB.setBackgroundResource(R.drawable.nutdapan);
ndC.setBackgroundResource(R.drawable.nutdapan);
ndD.setBackgroundResource(R.drawable.nutdapan);
SDA.setEnabled(true);
SDB.setEnabled(false);
SDC.setEnabled(false);
SDD.setEnabled(false);
}
});
return viewrow;
}
公共类custumkeimtra扩展了ArrayAdapter{
语境;
智力资源;
列表ch;
公共custumkeimtra(上下文、int资源、列表ch){
super(上下文、资源、ch);
this.context=上下文;
这个资源=资源;
this.ch=ch;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
最终单选按钮SDA、SDB、SDC、SDD;
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
最终视图视图行=充气机。充气(R.layout.custumkiemtra,父项,false);
TextView ndch=(TextView)viewrow.findViewById(R.id.cauhoi);
最终按钮ndA=(按钮)viewrow.findViewById(R.id.DA);
最终按钮ndB=(按钮)viewrow.findViewById(R.id.DB);
最终按钮ndC=(按钮)viewrow.findViewById(R.id.DC);
最终按钮ndD=(按钮)viewrow.findViewById(R.id.DD);
SDA=(单选按钮)viewrow.findViewById(R.id.SUADA);
SDB=(RadioButton)viewrow.findViewById(R.id.SUADB);
SDC=(单选按钮)viewrow.findViewById(R.id.SUADC);
SDD=(单选按钮)视图行.查找视图行id(R.id.SUADD);
SDA.setEnabled(假);
SDB.setEnabled(false);
SDC.setEnabled(错误);
SDD.设置启用(错误);
最终Cauhoi getch=ch.get(位置);
ndch.setText(“Cau”+String.valueOf(getch.get_id())+”:“+getch.getNoidung_cauhoi());
ndA.setText(getch.getNoidung_traloi1());
ndB.setText(getch.getNoidung_traloi2());
ndC.setText(getch.getNoidung_traloi3());
ndD.setText(getch.getNoidung_traloi4());
ndA.setTag(getch.get_id());
setTag(getch.get_id());
setTag(getch.get_id());
setTag(getch.get_id());
ndA.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
ndA.退耕地资源(R.可拔除的坚果);
ndB.挫折地资源(R.可提取的nutdapan);
退耕地资源(R.drawable.nutdapan);
退耕地资源(R.drawable.nutdapan);
SDA.setEnabled(真);
SDB.setEnabled(false);
SDC.setEnabled(错误);
SDD.设置启用(错误);
}
});
返回视图行;
}
然后我用它为Listview创建一个适配器。当我点击NdA按钮时,它的背景变成“nutdapanchon”,SDA为“true”,但我滚动Listview并返回
我的ndA背景是“nutdapan”,SDA是“flase”。为什么?如何解决此问题?请帮助我?Listview元素在屏幕外自动回收,请尝试以下方法解决您的问题:-
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
ViewHolder holder;
if(convertView==null){
/****** Inflate tabitem.xml file for each row ( Defined below ) *******/
vi = inflater.inflate(R.layout.tabitem, null);
/****** View Holder Object to contain tabitem.xml file elements ******/
holder = new ViewHolder();
holder.text = (TextView) vi.findViewById(R.id.text);
holder.text1=(TextView)vi.findViewById(R.id.text1);
holder.image=(ImageView)vi.findViewById(R.id.image);
/************ Set holder with LayoutInflater ************/
vi.setTag( holder );
}
else
holder=(ViewHolder)vi.getTag();
请参阅以下链接:-
只需使用布尔值即可使该状态保持稳定。您是否尝试过使用ViewHolder模式?转到我的答案并使用ViewHolder模式我尝试过,但失败了。有人可以帮助我解决此问题。我只想在单击按钮时更改按钮的背景,然后在滚动listview时按住按钮。我很关心listview.setRecyclerListener,但我不知道如何使用它它。我添加了像你一样的持有者。当我滚动列表视图时,它是变化的,但我发现了这样一个问题:当我单击列表[0]中的4个buton(例如:ndA)中的一个时,它是变化后退,但在列表[6]中也是ndA。为什么?