我需要我的listview始终有一个与其他列表项不同的尾随列表项,即使适配器为空。
我尝试在适配器构造函数的数据集末尾添加一个空项:
SELECT
i.trx_line_id AS invoice_line_id, -- Aliased
i.datasource AS invoice_datasource, -- Aliased
ie.category_type,
ss.trx_line_id AS sales_structure_line_id, -- Aliased
ss.datasource AS sales_structure_datasource, -- Aliased
pl.pl_cd
FROM
invoice i
LEFT JOIN
sales_structure ss ON i.trx_line_id = ss.trx_line_id
LEFT JOIN
invoice_ext ie ON i.trx_line_id = ie.trx_line_id
LEFT JOIN
product_level pl ON i.pl_cd = pl.pl_cd
WHERE
ss.sales_team_rpt IN ('a','b');
在getView方法中,我区分了最后一项和其他项,并相应地膨胀了不同的布局。
当用户添加新的列表项时,我需要删除数据集中的空项,将新数据添加到数据集的末尾,然后在数据集的最后一个索引中添加另一个空项:
mDataset.add(null);
这当然是在适配器中调用的。当我运行应用程序时,我收到以下错误:
public void addData(String data) {
mDataset.remove(mDataset.indexOf(null));
mDataset.add(data);
mDataset.add(null);
notifyDataSetChanged();
}
哪个映射到我的适配器的getView()方法中的这一行:
java.lang.NullPointerException: Attempt to read from field 'android.widget.TextView com.neutronstar.revu.DataAdapter$DataViewHolder.mDataTextView' on a null object reference
这是适配器中的getView()方法:
holder.mDataTextView.setText(mDataset.get(position));
如何解决此错误?
由于
答案 0 :(得分:0)
您可以在XML中指向一个ImageView,列表视图为空,并使其可见。在适配器类中检查数据集是否为空,使Imageview Visibility.visible和Listview的可见性更改为visibility.gone。
示例简短示例
XML
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listView"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageview"
android:visibility="gone"/>
</LinearLayout>
适配器
public class Adapter extends SomeAdapter{
//{
//constructor...
//overriden methods
//whatever you want...
//}
//place where you check if your dasaet is empty
if(dataset.length=0){
listview.setVisibility(View.GONE);
imageView.setVisibility(View.VISIBLE);
}
}
答案 1 :(得分:0)
正如@Rotwang所说。停止添加null项并将footer视图附加到listview,如下面的activity / fragment。
View v = getLayoutInflater().inflate(R.layout.footer, null);
listView.addFooterView(v); //IMPORTANT: make sure you call this before setAdapter
listView.setAdapter(adapter);
并且不要忘记创建页脚布局。