我正在尝试创建一个List,其中每个列表项都有两个文本视图和按钮,但是,当按钮在那里时,我无法看到文本视图文本。我正在做的是创建一个自定义列表适配器,以便我可以使用按钮的单击事件。任何想法为什么我的文本视图中的文本没有出现?每个列表项都有按钮,如果单击,则会显示Toast消息。
在我的活动中调用客户适配器:
ListAdapter adapter = new CustomSimpleAdapter(getActivity(), tripList,
R.layout.list_row, new String[] { TAG_TRIPID, TAG_TRIPNAME, TAG_TRIPSUMMARY, TAG_DISTANCE },
new int[] { R.id.pid, R.id.title, R.id.trip_sum, R.id.trip_dist });
// updating listview
((ListView) lv.findViewById(R.id.list)).setAdapter(adapter);
我的自定义适配器:
private class CustomSimpleAdapter extends SimpleAdapter implements OnClickListener {
private final Activity context;
private Button btnAddExpense = null;
public CustomSimpleAdapter(Activity context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
super(context, tripList, resource, from, to);
this.context = getActivity();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View rowView = inflater.inflate(R.layout.list_row, parent, false);
btnAddExpense = (Button) rowView.findViewById(R.id.btn_addExpense);
//btnAddExpense.setTag(position);
btnAddExpense.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "List Item Clicked.",
Toast.LENGTH_LONG).show();
}
});
return rowView;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
list_row xml:
<TextView
android:id="@+id/pid"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:typeface="sans"
android:textSize="15sp"
android:textColor="@drawable/list_item_text"
android:textStyle="bold"/>
<TextView
android:id="@+id/trip_sum"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/title"
android:textSize="12sp"
android:textColor="@drawable/list_item_text"
android:layout_marginTop="1dip" />
<TextView
android:id="@+id/trip_dist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/title"
android:layout_toLeftOf="@+id/btn_addExpense"
android:textSize="24sp"
android:textColor="@drawable/list_item_text"
android:textStyle="bold"/>
<Button
android:id="@+id/btn_addExpense"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/trip_sum"
android:layout_alignRight="@+id/trip_sum"
android:text="+Expense" />
</RelativeLayout>
感谢您的帮助!
编辑: 在我创建自定义适配器之前,我使用的是SimpleAdapter,数据显示正常。
ListAdapter adapter = new SimpleAdapter(getActivity(), tripList,
R.layout.list_row, new String[] { TAG_TRIPID, TAG_TRIPNAME, TAG_TRIPSUMMARY, TAG_DISTANCE },
new int[] { R.id.pid, R.id.title, R.id.trip_sum, R.id.trip_dist });
答案 0 :(得分:0)
您没有在setText()
上致电TextView
这就是原因。另外,我不知道你是怎么想出那个布局的,但它真的很难看。如果您不使用第一个TextView
,为什么要使用它?
更新:在getView()
方法中,使用您为布局中的每个TextView提供的ID检索TextView
的每个实例,就像使用按钮一样,只要调用了set文本并为其提供包含要为每行显示的文本数据的数组