【问题标题】:Android ListView set row colour on createAndroid ListView 在创建时设置行颜色
【发布时间】:2012-11-06 13:38:52
【问题描述】:

我试图在我的列表视图中为各个行设置背景颜色,我在运行时从我的数据库中检索颜色信息,我在试图弄清楚如何做到这一点时遇到了一些问题。

当我尝试访问 onCreate 中的列表视图以更改颜色时,我不断收到错误消息。谁能想到解决办法?

提前致谢。

 @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.item_list);

        // Read var from Intent
        Intent intent= getIntent();
        final String ListID = intent.getStringExtra("ListID");
        golbalItemID = ListID;

        ivAdd = (ImageView) findViewById(R.id.ivAdd);
        ivCancel = (ImageView) findViewById(R.id.ivCancel);
        tvTotItems = (TextView) findViewById(R.id.tvTotItems);

        final myDBClass myDb = new myDBClass(this);
        final ArrayList<HashMap<String, String>> MebmerList = myDb.SelectAllItemData(ListID);       

        myData =  myDb.SelectItemData(Integer.parseInt(ListID.toString())); 

        // listView1
        final ListView lisView1 = (ListView)findViewById(R.id.listView1); 

        registerForContextMenu(lisView1);

        SimpleAdapter sAdap;
        sAdap = new SimpleAdapter(ListItems.this, MebmerList, R.layout.activity_column,
                new String[] {"Name", "Price", "Quan"}, new int[] {R.id.ColName, R.id.ColTel, R.id.ColQuan});      
        lisView1.setAdapter(sAdap); 

        lisView1.setOnItemClickListener(new OnItemClickListener() {
              public void onItemClick(AdapterView<?> myAdapter, View myView, int position, long mylng) {
                  int iChk = 0;
                // Show Data
                String arrData[] = myDb.SelectItemData((MebmerList.get(position).get("ItemID").toString()));
                if(arrData != null)
                {
                    iChk = Integer.parseInt(arrData[4]);    
                }

                if(iChk == 1)
                {
                    ischkCheck(Integer.parseInt(MebmerList.get(position).get("ItemID").toString()), 0);
                    change_color(lisView1, position, 255, 255, 255);

                    System.out.println("POSITION!ichk=1" + myAdapter.getItemAtPosition(position).toString());
                    setTitle(myAdapter.getItemAtPosition(position).toString());
                }

                else if(iChk == 0)
                {
                    ischkCheck(Integer.parseInt(MebmerList.get(position).get("ItemID").toString()), 1);
                    change_color(lisView1, position, 155, 155, 138);

                    System.out.println("POSITION!ichk=0" + myAdapter.getItemAtPosition(position).toString());
                }

              }});

        ivAdd.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent newActivity = new Intent(ListItems.this,AddItem.class);
                newActivity.putExtra("ListID", ListID);
                startActivity(newActivity);
                finish();
            }
        });

        ivCancel.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent newActivity = new Intent(ListItems.this,MenuScreen.class);
                startActivity(newActivity); 
                finish();
            }
        });

【问题讨论】:

    标签: android listview colors background row


    【解决方案1】:

    如果最有可能使用自己的适配器更简单,请覆盖getView(); 方法(您可以简单地调用super.getView();,然后在返回视图之前设置自己的背景颜色。

    public class MyAdapter extends SimpleAdapter {
    
      @Override
      View getView(int position, View convertView, ViewGroup parent) {
    
          View view = super.getView( position, convertView, parent );
          view.setBackgroundColor( 0xff00ff00 );
    
          return view;
      }
    }
    

    应该让你的行变成绿色。

    【讨论】:

    • 我实现了你说的代码并用它替换了我的适配器,没有颜色变化。
    • MyAdapter sAdap; sAdap = new MyAdapter(ListItems.this, MebmerList, R.layout.activity_column, new String[] {"Name", "Price", "Quan"}, new int[] {R.id.ColName, R.id. ColTel, R.id.ColQuan}); lisView1.setAdapter(sAdap);
    猜你喜欢
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 2013-08-06
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    相关资源
    最近更新 更多