2013-08-17 70 views
1

我有一个列表视图来显示详细数据。我将数据存储在字符串的ArrayList中。但是,某些字段可能没有任何数据要显示,但我需要保持数组长度相同以匹配静态标题数组。我就能够在我的getView方法中的空数据我的自定义基本适配器的位置:Android删除自定义阵列适配器中的listview行

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

     if (convertView == null) { 
      convertView = mInflater.inflate(R.layout.drug_detail_cell, parent, false); 
     } 

     // check array bounds 
     if (position < getCount()) { 

      // check for null items 
      String item = items.get(position); 
      if (item != null) { 

       // get the text views 
       TextView title = (TextView) convertView.findViewById(R.id.item_title); 
       TextView sub = (TextView) convertView.findViewById(R.id.item_subtitle); 

       title.setText(titles.get(position)); 
       sub.setText(item.toString());     
      } else { 
       // delete row 
      } 
     } 

     return convertView; 
    } 

我的问题是,虽然数据不显示,我还是在我的列表视图的空行。我的问题是如何删除该行?任何帮助将不胜感激。先谢谢了。

+0

删除你的适配器上填充你的listview调用'notifyDatasetChanged'的数据来刷新或更新列表视图 – Raghunandan

+0

查找textViews id如果条件没有超出它,当你膨胀的视图。 – Piyush

回答

1

我有一个小窍门:在else子句返回一个空视图

else{ 
    View v = new View(context); 
    v.setLayoutParams(new AbsListView.LayoutParams(0, 0)); 
    return v; 
} 

但是如果你的列表有护栏,空视图下方的分隔一倍。

另一种:我认为你应该在getView调用之前处理所有的空数据。我的意思是: - 在getCount(){ 循环并从位置创建新映射,而不是空数据
循环并计数所有数据!= null;返回计数; }

在getView函数中使用新的地图。

希望得到这个帮助。

+0

感谢您的回复。我把你的建议发送给阵列适配器之前处理空数据。由于我的数据集很小,我创建了一个循环来从我的列表和关联的头中删除空数据。 – wyoskibum

2

对于从CustomListAdapter移除一行:

从指定索引一个ArrayAdapter删除的项目,该呼叫notifyDatasetChanged后。它会更新你的listView。

CustomAdapterClass

@Override 
public void remove(String object) { 
    super.remove(object); 

     // your other code 
} 

ListActivity类:

CustomAdapterClass adap = new CustomAdapterClass(); 

adap.remove("hello world"); 

adap.notifyDatasetChanged(); // this will update your listView 

我的代码是一个bare bone example描绘如何实现自己的目标。

相关问题