【问题标题】:Displaying two buttons on the same row in a listview in android在android的列表视图中的同一行上显示两个按钮
【发布时间】:2014-12-10 11:22:29
【问题描述】:

大家好,我还是 android 编程的新手,所以我想知道是否可以在此表单中使用每行两个按钮在列表视图中显示数组数据

array = {一、二、三、四等}

下面的列表视图

[按钮一个] [按钮两个]

[按钮三个] [按钮四个]

我为下面创建的示例 xml 文件

<?xml version="1.0" encoding="utf-8"?> 

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:orientation="vertical">

          <TextView android:id="@+id/tv_string_data"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="@string/sample_data"
                    android:textSize="15sp"
                    android:paddingBottom="5dp" />

<LinearLayout android:layout_width="fill_parent"
           android:layout_height="fill_parent"
           android:orientation="horizontal">

         <Button android:id="@+id/btn_number_data"
                 android:layout_width="160sp"
                 android:layout_height="wrap_content"
                 android:text="@string/button_text"
                 android:paddingBottom="5dp" />

        <Button android:id="@+id/btn_number"
                android:layout_width="160sp"
                android:layout_height="wrap_content"
                android:text="@string/button_text"
                android:paddingBottom="5dp" />

</LinearLayout>

        <TextView android:id="@+id/tv_double_data"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:text="@string/sample_data_2"
                  android:textSize="15sp"
                  android:paddingBottom="5dp" />

</LinearLayout>

我编写的实现代码的java代码如下

public class CustomAdapter extends BaseAdapter {

private static final String TAG = CustomAdapter.class.getSimpleName();
    ArrayList<DataModel> listArray;

public CustomAdapter() {
        listArray = new ArrayList<DataModel>(5);
        listArray.add(new DataModel("name1", 5, 1.8, "Java"));
        listArray.add(new DataModel("name2", 10, 2.8, "Python"));
        listArray.add(new DataModel("name3", 15, 3.8, "Django"));
        listArray.add(new DataModel("name4", 20, 4.8, "Groovy"));
        listArray.add(new DataModel("name5", 25, 5.8, "Maven"));
    }

@Override
public int getCount() {
    return listArray.size();    // total number of elements in the list

}

@Override
public Object getItem(int i) {
    // TODO Auto-generated method stub
    return listArray.get(i);
}

@Override
public long getItemId(int i) {
    // TODO Auto-generated method stub
    return i;
}

 @Override
    public View getView(int index, View view, final ViewGroup parent) {

if (view == null) {
            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
            view = inflater.inflate(R.layout.single_list_item, parent, false);
        }

        final DataModel dataModel = listArray.get(index);

TextView textView = (TextView) view.findViewById(R.id.tv_string_data);
        textView.setText(dataModel.getName());

        Button button = (Button) view.findViewById(R.id.btn_number_data);
        button.setText("" + dataModel.getAnInt());

        Button buttontwo = (Button) view.findViewById(R.id.btn_number);
        buttontwo.setText("" + dataModel.getAnInt());

        textView = (TextView) view.findViewById(R.id.tv_double_data);
        textView.setText("" + dataModel.getaDouble());


button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d(TAG, "string: " + dataModel.getName());
                Log.d(TAG, "int: " + dataModel.getAnInt());
                Log.d(TAG, "double: " + dataModel.getaDouble());
                Log.d(TAG, "otherData: " + dataModel.getOtherData());

                Toast.makeText(parent.getContext(), "button clicked: " + dataModel.getAnInt(), Toast.LENGTH_SHORT).show();
            }
        });

        buttontwo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d(TAG, "string: " + dataModel.getName());
                Log.d(TAG, "int: " + dataModel.getAnInt());
                Log.d(TAG, "double: " + dataModel.getaDouble());
                Log.d(TAG, "otherData: " + dataModel.getOtherData());

                Toast.makeText(parent.getContext(), "button clicked: " + dataModel.getAnInt(), Toast.LENGTH_SHORT).show();
            }
        });

view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d(TAG, "string: " + dataModel.getName());
                Log.d(TAG, "int: " + dataModel.getAnInt());
                Log.d(TAG, "double: " + dataModel.getaDouble());
                Log.d(TAG, "otherData: " + dataModel.getOtherData());

                Toast.makeText(parent.getContext(), "view clicked: " + dataModel.getOtherData(), Toast.LENGTH_SHORT).show();
            }
        });

        return view;
    }

}

但我没有得到预期的结果......结果显示为

[按钮一个] [按钮一个]

[按钮两个] [按钮两个]

而不是

[按钮一个] [按钮两个]

[按钮三个] [按钮四个]

感谢您的帮助,谢谢

【问题讨论】:

标签: java android listview


【解决方案1】:

您好,要创建这种布局,请使用带有两个按钮行 XML 文件的自定义适配器

【讨论】:

  • 刚刚编辑了我的问题,所以希望你能得到我真正想要实现的目标
【解决方案2】:

因为您在两个按钮上设置了相同的文本:更改第二个按钮的文本。

 Button button = (Button) view.findViewById(R.id.btn_number_data);
 button.setText("" + dataModel.getAnInt());

 Button buttontwo = (Button) view.findViewById(R.id.btn_number);
 buttontwo.setText("" + dataModel.getAnInt());

【讨论】:

  • 我知道这一点,所以问题是如何以我想要的方式显示文本:)
  • 在您的数据模型中,您传递 4 个值。你想在第二个按钮上设置双精度值吗?
  • 我希望 10 出现在第二个按钮上.....其余的按此顺序进行
  • 最后一个值呢?
  • 你可以这样做。 if(istArray.size()
猜你喜欢
  • 2019-01-20
  • 1970-01-01
  • 1970-01-01
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-21
  • 1970-01-01
相关资源
最近更新 更多