繁体   English   中英

我的列表视图中有10个项目后,其中一个文本视图不显示

[英]After 10 items in my listview, one of the text views does not display

我有一个android.R.layout.simple_list_item_2列表视图,该列表视图使用以下代码,当我在列表视图中添加10个项目时,一切正常,然后当我添加另一个项目时,列表的第一行未显示((尽管ontextlistener表示存在),列表中第十项以外的每一项都会发生这种情况。

这是将项目添加到列表的代码

meetingList.add(new String[] {db.get(0).getDate(), " "});
        meetingList.add(new String[] {db.get(0).getName(), db.get(0).getEvent() });

for (int i = 1; i<db.size(); i++){          
                if (db.get(i).getDate() != database.list.get(i-1).getDate()){
                    meetingList.add(new String[] {db.get(i).getDate(), " "});
                }           
            meetingList.add(new String[] { database.list.get(i).getName(), database.list.get(i).getEvent() });          
        }

这是我的列表适配器

setListAdapter(new ArrayAdapter<String[]>(this, android.R.layout.simple_list_item_2, android.R.id.text1, meetingList) {     

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {


                // Must always return just a View.
                final View view = super.getView(position, convertView, parent);

                // If you look at the android.R.layout.simple_list_item_2 source, you'll see
                // it's a TwoLineListItem with 2 TextViews - text1 and text2.
                // TwoLineListItem listItem = (TwoLineListItem) view;

                final String[] entry = meetingList.get(position);
                TextView text1 = (TextView) view.findViewById(android.R.id.text1);                                        
                TextView text2 = (TextView) view.findViewById(android.R.id.text2);

                text1.setText(entry[0]);
                text2.setText(entry[1]);
                if (entry[1].equals(" ")){
                view.setBackgroundColor(Color.parseColor("#009ACD"));
                text1.setTextColor(Color.parseColor("#FFFFFF"));
                text1.setGravity(Gravity.CENTER);
                text1.setTextSize(22);               

                }
                else {
                    view.setBackgroundColor(Color.WHITE);
                    text1.setTextSize(25);
                    text2.setTextSize(18);
                }

                final Context context = getApplicationContext();
                final int duration = Toast.LENGTH_SHORT;

                text1.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View arg0) {  
                        Toast toast = Toast.makeText(context, entry[0], duration);
                        toast.show();                       
                    }
                });

那个getView()方法看起来很乱。

在xml中创建一个具有这2个TextView的View(如LinearLayout ):

<com.example.myApp.view.MyListView
  ...>
   <TextView android:id="@+id/txt1
      ...>
   <TextView android:id="@+id/txt2
      ...>

<com.example.myApp.view.MyListView />

然后在包中创建一个类

com.example.myApp.view

(或任何您想调用的名称),称为MyListViewextends LinearLayout (或Relative等)。

然后在您的getView方法中:

  • 检查是否convertView!= null

如果是这样, MyListView listview = (MyListView) convertView

否则, MyListView listview = new MyListView()

然后向MyListView添加方法以设置TextViews等。

然后return listview

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM