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








