gpt4 book ai didi

java - 如何在 ListFragment 中使用带有自定义列表布局的 setEmptyView()

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:20:57 28 4
gpt4 key购买 nike

我正在使用带有一些 Fragments 的分页器。

我想在列表 (Fragment) 中没有条目时显示一条消息。

我尝试将 Textviewandroid:id="@id/android:empty 一起使用,但它不起作用。

自定义列表布局代码:

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

<TextView
android:id="@+id/label_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="@dimen/padding_medium"
android:text="@string/label_value"
android:textColor="@android:color/white"
android:textSize="18sp" />

<TextView
android:id="@+id/label_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="@dimen/padding_medium"
android:text="@string/title_time"
android:textColor="@android:color/white"
android:textSize="16sp" />

</RelativeLayout>

列出适配器类:

public class JournalAdapter extends ArrayAdapter<String> {

private final Context context;
private final List<String> values;
private final List<String> dates;

public JournalAdapter(Context context, List<String> values,
List<String> dates) {
super(context, R.layout.layout_journal_list, values);

this.context = context;
this.values = values;
this.dates = dates;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View rowView = inflater.inflate(R.layout.layout_journal_list, parent, false);

TextView value = (TextView) rowView.findViewById(R.id.label_glucose);
TextView date = (TextView) rowView.findViewById(R.id.label_date);

value.setText(values.get(position));
date.setText(dates.get(position));

return rowView;
}

}

列表解析方法:

private void initListView() {
values = dataSource.getAllValues();

List<String> values = new ArrayList<String>();
List<String> dates = new ArrayList<String>();

for (Value value : values) {
values.add(Double.toString(value.getValue()));
dates.add(secondsToDate(value.getDate()));
}

setListAdapter(new JournalAdapter(context, values, dates));

listView = getListView();
listView.setEmptyView(noItems("NO ITEMS"));
listView.setOnItemClickListener(this);
}

noItems 方法:

private TextView noItems(String text) {
TextView emptyView = new TextView(context);
emptyView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
emptyView.setText(text);
emptyView.setTextColor(Color.WHITE);
emptyView.setTextSize(20);
emptyView.setVisibility(View.GONE);
emptyView.setGravity(Gravity.CENTER_VERTICAL
| Gravity.CENTER_HORIZONTAL);

return emptyView;
}

最佳答案

这对我有用(从 this question 得到解决方案 William Remacle 询问)。您可能错过的是将创建的 TextView 添加到 ListView 布局父级(noItems 底部的第二行代码 下面的方法):

在我的 ListFragment 中,我使用以下方法获取空 View 的 View :

private TextView noItems(String text) {
TextView emptyView = new TextView(getActivity());
//Make sure you import android.widget.LinearLayout.LayoutParams;
emptyView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
//Instead of passing resource id here I passed resolved color
//That is, getResources().getColor((R.color.gray_dark))
emptyView.setTextColor(getResources().getColor(R.color.gray_dark));
emptyView.setText(text);
emptyView.setTextSize(12);
emptyView.setVisibility(View.GONE);
emptyView.setGravity(Gravity.CENTER_VERTICAL
| Gravity.CENTER_HORIZONTAL);

//Add the view to the list view. This might be what you are missing
((ViewGroup) getListView().getParent()).addView(emptyView);

return emptyView;
}

然后在 ListFragmentonStart() 方法中设置空 View :

@Override
public void onStart() {
super.onStart();
getListView().setEmptyView(
noItems(getResources().getString(R.string.widget_empty)));
}

关于java - 如何在 ListFragment 中使用带有自定义列表布局的 setEmptyView(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14082303/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com