【问题标题】:Fix Code custom ListView修复代码自定义 ListView
【发布时间】:2015-01-05 14:38:41
【问题描述】:

我有一门课:

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;
}

然后我用它为 Listview 创建一个适配器。当我单击按钮 NdA 时,它的背景变为“nutdapanchon”并且 SDA 为“true”,但随后我滚动 ListView 并返回 我的 ndA 背景是“nutdapan”,而 SDA 是“flase”。为什么?如何解决这个问题?请帮帮我?

【问题讨论】:

  • 只需使用布尔值使该状态稳定
  • 你试过 ViewHolder 模式吗?
  • stackoverflow.com/questions/26190444/… 转到我的答案并使用 View Holder Pattern
  • 我尝试但我失败了。有人可以帮我解决这个问题。我只想在单击按钮时更改按钮的背景,并在滚动列表视图时按住它。我很喜欢 listview.setRecyclerListener 但我不知道如何使用它。

标签: android


【解决方案1】:

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();

见下面的链接:-

http://www.vogella.com/tutorials/AndroidListView/article.html

http://androidexample.com/How_To_Create_A_Custom_Listview_-_Android_Example/index.php?view=article_discription&aid=67&aaid=9

【讨论】:

  • 我添加了像你一样的持有人,当我滚动列表视图时它会发生变化,但我发现这样的问题:当我点击列表 [0] 中的 4 个按钮(例如:ndA)之一时,它会改变背景但在列表 [6] ndA 中。为什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-11
  • 1970-01-01
相关资源
最近更新 更多