Java Android-仅用于一行的自定义ListView
我想要一些像下图所示的东西。。。项目3、项目4和项目7有一个切换开关,但项目1、项目2、项目5和项目6没有。有人能帮我做这个布局,让切换开关也能工作吗 我想要用Photoshop制作的 我的Java文件 **XML**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
<?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;
}}