Listview / ListItem按钮没有显示?

时间:2014-11-30 21:56:09

标签: android android-layout listview android-listview listadapter

我正在尝试创建一个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 });

1 个答案:

答案 0 :(得分:0)

您没有在setText()上致电TextView这就是原因。另外,我不知道你是怎么想出那个布局的,但它真的很难看。如果您不使用第一个TextView,为什么要使用它?

更新:在getView()方法中,使用您为布局中的每个TextView提供的ID检索TextView的每个实例,就像使用按钮一样,只要调用了set文本并为其提供包含要为每行显示的文本数据的数组