2016-02-12 73 views
0

我有一个名为listv的listView,我用数组填充listView。我想让listView中的第一个项目的背景变成红色。我可以填充列表,但是我无法使列表中的背景第一项变为红色。在ListView中将第一项的背景更改为红色

这就是我试过的。我的代码休耕

我的班级

private ArrayList<String> arrayList; 
private ArrayAdapter<String> adapter; 
private EditText txtInput; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_list_deadlines); 
    final ListView listView = (ListView)findViewById(R.id.listv); 
    String[] items= {"HCI","ITM","Presentation"}; 
    arrayList=new ArrayList<>(Arrays.asList(items)); 
    adapter=new ArrayAdapter<String>(this,R.layout.list_item,R.id.txtitem,arrayList); 
    listView.setAdapter(adapter); 

    txtInput=(EditText)findViewById(R.id.txtinputs); 


      if(R.id.listv == 0) 
       listView.setBackgroundColor(Color.parseColor("#fffff")); 


    }); 

} 

XML

<ListView 
    android:id="@+id/listv" 
    android:layout_marginTop="100dp" 
    android:layout_width="wrap_content" 
    android:layout_height="200dp"> 

</ListView> 

回答

0

您可以使用自定义ArrayAdapter,覆盖getView()和它是否 “位置” == 0则变化该项目的背景,你喜欢什么。我相信它是在调用notifyDataSetChanged()后调用每个项目的。

+0

我是android开发新手。不好意思打扰你,但你怎么去做这件事。感谢一家工厂 – user3529620

0

这不是正确的方法。呈现每一行发生在适配器内部。你必须定义你自己的适配器,或者你可以从ArrayAdapter扩展。在getView()方法中,首先调用基类getView,如果位置为零,则设置背景颜色。

class MyAdapter extends ArrayAdapter<String> { 
    View getView(int position, View convertView, ViewGroup parent) { 
      View ret = super.getView(position, convertView, parent); 
      if (position == 0) { 
       ret.setBackground(red); 
      } else { 
      ret.setBackground(white); 
      } 
      return ret; 
    } 
} 

您还可以添加一个标题视图来完成此操作。

除非您被要求使用ListView,否则可能更好考虑RecyclerView。

+0

所以,我只是创建一个新的类添加代码,然后在我的其他类中调用它。 – user3529620

+0

您可以创建一个适配器类,比如MyAdapter,如上所示,然后执行listView.setAdapter(new MyAdapter(....)); 当呈现列表项时,框架将调用适配器的getView。 – greenrobo

相关问题