2012-12-26 50 views
1

下面是我的代码和图像。我在runOnUIThread()onpostexecute()中使用arraylist填充listview,它具有从doInBackground()中的远程服务器获取的值。但事情是元素只有在焦点位于特定项目时才可见。我一直在尝试用不同的方法来设置可见的元素,但都是徒劳的。有人可以建议我如何让物品可见。注意:我无法扩展ListActivity,因为我有另一个需要扩展的类,它是一个活动的子类。ListView元素默认不可见

runOnUiThread(new Runnable() { 

    public void run() { 
      //Updating parsed json data to Listview 

      ListView listView = (ListView)findViewById(R.id.listsubcategory); 


    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1, subCategoryList); 
         listView.setAdapter(arrayAdapter); 


         listView.setOnItemClickListener(new OnItemClickListener() { 

             @Override 
             public void onItemClick(AdapterView<?> parent, View view, 
                 int position, long id) { 



         String selectedSubcategory = subCategoryList.get(position); 
         Toast.makeText(getApplicationContext(), "You clicked on "+selectedSubcategory, Toast.LENGTH_SHORT).show(); 


             } 
           }); 


       } 
      }); 

enter image description here

回答

5

的问题是列表项的造型。在正常状态下,您的物品具有白色背景和白色文字颜色,因此您无法看到它们。当状态改变以聚焦时,颜色改变。您可以使用自定义列表项而非系统的android.R.layout.simple_list_item_1轻松解决问题。

定义项目的布局,也可以是这样的:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@id/text1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/my_item_background" 
    android:textColor="@color/my_text_color" 
/> 

现在,如果该项目的布局是res/layout/my_list_item.xml,创建适配器是这样的:

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getContext(), 
            R.layout.my_list_item, subCategoryList); 
+0

感谢。 +1为您的时间并标记为解决方案。 :) – Korhan