Android - 自定义ListView只有一个单排

我想要像下面的图像显示...作为项目3,项目4和项目7有一个切换开关,但项目1,项目2,项目5,项目6 Doesn'没有。有人能帮助我,使这个布局,使拨动开关工作太Android - 自定义ListView只有一个单排

我希望这(产地在Photoshop)

我的Java文件

import android.content.*; 

import android.view.*;

import android.widget.*;

class CustomSettingsAdapter extends ArrayAdapter<String> {

String[] settingItems = {

"Themes",

"Entry Tune",

"Remember Last Location",

"About Us",

"Exit"

};

public CustomSettingsAdapter(Context context, String[] Items) {

super(context, R.layout.main_settings_listview, Items);

}

@Override

public View getView(final int position, View convertView, ViewGroup parent) {

LayoutInflater layoutInflater = LayoutInflater.from(getContext());

View customView = layoutInflater.inflate(R.layout.main_settings_listview, parent, false);

String itemName = getItem(position);

TextView textView =(TextView) customView.findViewById(R.id.itemName);

Switch mButton = (Switch) customView.findViewById(R.id.Switch);

if (position == 1 || position == 2) {

mButton.setVisibility(View.VISIBLE);

}

textView.setText(settingItems[position]);

return customView;

}

}

* * 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>

回答:

使用此代码,它帮助你。

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>

,并使用该适配器

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;

}}

,这是输出: -

随时问,如果你在任何地方停留之间。

编辑: - getView()是使用了识别button被点击,所以你不想。在getView()i变量用于确定单击的是哪个项目去关心它。 只需在getView()内设置您的OnchangeListner并解决您的问题。

回答:

您可以使用回收视图。您可以通过为两种不同的设计创建两个xml来实现此目的,并根据条件可以在布局inflater中设置视图。使用这些方法获取额外视图。

@Override 

public int getViewTypeCount() {

return VIEW_TYPE_COUNT;

}

@Override

public int getItemViewType(int position) {

return position;

}

您也可以参考this link.

以上是 Android - 自定义ListView只有一个单排 的全部内容, 来源链接: utcz.com/qa/265833.html

回到顶部