Java Android-仅用于一行的自定义ListView

Java Android-仅用于一行的自定义ListView,java,android,listview,Java,Android,Listview,我想要一些像下图所示的东西。。。项目3、项目4和项目7有一个切换开关,但项目1、项目2、项目5和项目6没有。有人能帮我做这个布局,让切换开关也能工作吗 我想要用Photoshop制作的 我的Java文件 **XML** <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientati

我想要一些像下图所示的东西。。。项目3、项目4和项目7有一个切换开关,但项目1、项目2、项目5和项目6没有。有人能帮我做这个布局,让切换开关也能工作吗

我想要用Photoshop制作的

我的Java文件

**XML**

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="6dp"
    android:minHeight="48dp"
    android:id="@+id/mainActivityListBackground"
    >

   <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Item Number"
       android:id="@+id/itemName"
       android:layout_marginLeft="5dp"
       android:textSize="18sp"
       android:layout_centerVertical="true"
       />

    <Switch
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/Switch"
        android:visibility="invisible"
        android:layout_alignParentRight="true"
        />

</RelativeLayout>
</RelativeLayout>

您可以使用recycler视图。您可以通过为两种不同的设计创建两个xml来实现此目的,并且可以根据条件在布局充气器中设置视图。对于额外的视图,请使用这些方法

@Override
public int getViewTypeCount() {
    return VIEW_TYPE_COUNT;
}

@Override
public int getItemViewType(int position) {
    return position;
}

您也可以参考

使用此代码以帮助您

item.xml

   <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linear"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/code"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:layout_weight="1"
        android:textSize="16dp" />


    <Switch
        android:id="@+id/toggleButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:gravity="center"
        android:text="Off"
        android:visibility="invisible" />

</LinearLayout>
这就是输出:-

请随时询问您是否在这两者之间遇到了困难

编辑:-getView用于标识单击了哪个按钮,因此您不想关心它。在getView中,i变量用于标识单击了哪个项目。
只需在getView中设置OnchangeListner,问题就可以解决。

使用自定义适配器和列表视图,并隐藏可见的切换,切换您需要的项……。我如何才能做到这一点?我的意思是如何隐藏特定行中的项?在自定义adpater的bindView或geView方法中使用逻辑。e、 g.如果位置%2==0{view.setBackgroundColorContextCompat.getColorcontext,R.color.ColorListViewRow偶数;}否则{view.setBackgroundColorContextCompat.getColorcontext,R.color.colorlistviewrowodd;}是交替背景颜色的工作代码。@AmmyDua查看示例this shophdrll.setVisibilityView.VISIBLE;使shophdrll视图可见。有两种选择不可见或消失。后者使显示像视图不存在一样,而前者仅隐藏视图的显示。或者只需在自定义适配器内传递布尔变量并处理开关按钮可见性。这有助于制作布局,但如何处理这些按钮?我的意思是mButton.setOnClickListener它需要一个特定的ID,那么如何给它?我不明白你的问题??在我的应用程序的设置中,我有主题,入口调谐,记住历史,所以主题不需要任何开关我想要入口调谐,记住历史根据用户需要打开或关闭,那个么我该怎么做呢?你们想用toogle按钮应用主题吗?若输入调谐在它上面,写1到SharedReferences,若它关闭,写0,那个么怎么做呢?如果entryTune.isChecked{SharedPreferences SharedPreferences=getsharedpreferences,MODE_PRIVATE;int-Theme=SharedPreferences.getIntEntry_Tune,1;}否则{SharedPreferences SharedPreferences=getsharedpreferences,MODE_PRIVATE;int-Theme=SharedPreferences.getIntEntry_Tune,0;}
   <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linear"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/code"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:layout_weight="1"
        android:textSize="16dp" />


    <Switch
        android:id="@+id/toggleButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:gravity="center"
        android:text="Off"
        android:visibility="invisible" />

</LinearLayout>
public class PhoneAdapter extends BaseAdapter {
    private Context context;

    public PhoneAdapter(Context context) {
        this.context = context;
    }

    @Override
    public int getCount() {
        return 7;
    }

    @Override
    public Object getItem(int i) {
        return i;
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(final int i, View convertView, ViewGroup viewGroup) {

        convertView = View.inflate(context, R.layout.item, null);


        TextView mCode = (TextView) convertView.findViewById(R.id.code);

        Switch mButton = (Switch) convertView.findViewById(R.id.toggleButton);

        mCode.setText("item"+i+1);
        if (i == 2 || i == 3 || i == 6)
            mButton.setVisibility(View.VISIBLE);

        return convertView;
    }}