我有一个带有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>
答案 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。