Android ListView显示空内容

时间:2015-04-08 15:32:08

标签: android listview android-listview android-adapter

我有一个带有listview的片段。适配器只有一个字段:项目ID。

当我使用适配器将项目添加到列表时,列表会显示项目ID。

但是如果我之前放了一个简单的项ID检查(一个for-cycle检查项id是否等于一个特定的id,如果是,则添加项id),列表显示一个空行(就像它添加的一样)某事)但没有显示项目ID。

可能是什么?我确定"检查部分"的工作原理。

编辑:我忘了指定商品ID是字符串。

编辑2 :我添加了代码的检查部分。它遍历list,其中包含我要添加到其他片段列表的项ID。 item是我正在检查的项目。 blueF是片段。

for(int i=0; i<list.getCount();i++) {   
  if(list.getItem(i).equals(item.getId())) {
    //send the item to the listview of the fragment
    blueF.getArrayAdapter().addItem(item);
    break;
  }
}

编辑3 :经过一些测试后,我发现片段中的listview包含在项目内部(我使用了getCount并打印了项目ID),但它没有显示商品ID!我的自定义适配器在&#34;添加&#34;中有一个notifyDataSetChanged();方法和我在活动中调用add方法之后还召回了notifyDataSetChanged但没有。

编辑4 :可能是布局有些问题? 我有这个列表行的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/inventory_item_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >

<TextView
    android:id="@+id/inventory_item"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="0.4"
    android:textSize="17sp"
    android:typeface="monospace" >

</TextView>

<TextView
    android:id="@+id/inventory_item_counter"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:textSize="17sp"
    android:typeface="monospace" />

</LinearLayout>

使用listview的片段布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

    <ListView

    android:id="@+id/listBlueTagView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

     </ListView>

</RelativeLayout>

3 个答案:

答案 0 :(得分:0)

从你的问题来看,我理解这一点,

在你的主要活动中尝试这个,这些只是伪代码,可能会有一些拼写错误。

public class Main extends Activity{
EditText etID; //Your Item ID field.
ListView listView; // Listview in your XML.
int check_ID; // ID which you want to compare with Edit Texts' value.
List<String> arrayList= new ArrayList<String>();


protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.Your_Layout_XML);

etID = (EditText) findViewById(R.id.editTextID); //ITEM_ID editText id in XML
listView = (ListView) findViewById(R.id.your_ListView_ID);
check_ID = 1; // suppose you want to add into your list if user enters 1 in editText as Item ID
if(check_ID = Integer.parseInt(etID.getText().toString())) //get value from EditText then check it with your desired value and on being equal add item to list
// add item here and set it to listView
arrayList.add("Mango");
ArrayAdapter<String> array_Adapter = new ArrayAdapter<String>(
             this, 
             android.R.layout.simple_list_item_1,
             arrayList);

     listView .setAdapter(array_Adapter ); 


 } else{
  Toast.makeText(getApplicationContext(),"Wrong ITEM ID",Toast.LENGTH_SHORT).show();        
    }

}

答案 1 :(得分:0)

您的过滤器代码应在设置适配器的数据之前完成,因此适配器只包含它将显示的项目。

答案 2 :(得分:-1)

我已经解决了这个问题。

这是在适配器的getView中生成的图形问题。基本上,一些元素覆盖了ID的颜色文本,使其不可见。

我将文字颜色设置为Color.BLACK,现在我可以看到该项目的ID。