简体   繁体   English

在Android列表视图的同一行上显示两个按钮

[英]Displaying two buttons on the same row in a listview in android

Hello guys am still new in android programming so i wanted find out whether its possible to show an array data in a listview using two buttons per each rowin this form 大家好,您在android编程中还是一个新手,所以我想弄清楚是否有可能在此表单中每行使用两个按钮在listview中显示数组数据

array = {one, two, three, four etc} 数组= {1、2、3、4等}

listview below 下面的列表视图

[button one ] [button two ] [按钮 ] [按钮 ]

[button three ] [button four ] [按钮 ] [按钮 ]

sample xml file i creared for that below 我为下面的示例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>

and the java code i wrote to implement the code is below 我为实现该代码而编写的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;
    }

} }

but i don't get the desires results as expected.... the results appears as 但是我没有得到期望的结果。...结果显示为

[button one ] [button one ] [按钮 ] [按钮 ]

[button two ] [button two ] [按钮 ] [按钮 ]

instead of 代替

[button one ] [button two ] [按钮 ] [按钮 ]

[button three ] [button four ] [按钮 ] [按钮 ]

Will appreciate the help thank you 会感谢您的帮助谢谢

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

Becuase you set same text on both button: Change the text for second button. 因为您在两个按钮上都设置了相同的文本:更改第二个按钮的文本。

 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());

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM