【发布时间】:2014-11-30 21:56:09
【问题描述】:
我正在尝试创建一个列表,其中每个列表项都有两个文本视图和按钮,但是,当按钮在那里时,我无法看到文本视图文本。我正在做的是创建一个自定义列表适配器,以便我可以使用按钮的单击事件。任何想法为什么我的文本视图中的文本没有显示?每个列表项都有该按钮,如果单击,则会显示吐司消息。
在我的活动中调用客户适配器:
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 });
【问题讨论】:
-
您从未在适配器中的 TextView 中设置任何文本
标签: android android-layout listview android-listview listadapter