【发布时间】:2017-06-18 03:03:51
【问题描述】:
我是 Android 新手。我正在用 android 开发一个应用程序,最低 API 级别为 15,最高 API 级别为 23。
我想要like this,另一件事是子导航中的多项选择项。当从父导航视图中选择任何项目时,子导航视图将打开,如图所示。我在谷歌上搜索但没有得到答案。我看到this 和其他很多堆栈溢出答案但没有得到。如果有人帮助,那么非常感谢。在此先感谢。
main_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/lvList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"/>
</LinearLayout>
这是我的java文件
public class HomePageActivity extends AppCompatActivity
{
ListView lvList;
ArrayList<String> arrayList;
NavigationViewAdapter adapter;
ArrayList<RowObject> selectedItemArray;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hope_page);
lvList = (ListView)findViewById(R.id.lvList);
setUpListView();
lvList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
lvList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
for (int i = 0; i < selectedItemArray.size(); i++)
{
if (i == position){
selectedItemArray.get(position).setSelectedItem(true);
}else{
selectedItemArray.get(i).setSelectedItem(false);
}
}
adapter.notifyDataSetChanged();
}
});
}
private void setUpListView()
{
arrayList = new ArrayList<>();
selectedItemArray = new ArrayList<>();
for (int i = 0; i < 20; i++)
{
arrayList.add("Item "+(i+1));
selectedItemArray.add(new RowObject(i, false));
}
adapter = new NavigationViewAdapter(HomePageActivity.this, arrayList, selectedItemArray);
if (adapter != null)
{
lvList.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}
}
这是我的适配器
public class NavigationViewAdapter extends BaseAdapter
{
Activity activity;
View itemView;
private LayoutInflater inflater;
private ViewHolder viewHolder;
ArrayList<String> arrayList;
ArrayList<RowObject> selectedItemArray;
public NavigationViewAdapter(Activity activity, ArrayList<String> arrayList, ArrayList<RowObject> selectedItemArray)
{
this.activity = activity;
this.arrayList = arrayList;
this.selectedItemArray = selectedItemArray;
inflater = (LayoutInflater)this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return arrayList.size();
}
@Override
public Object getItem(int position) {
return arrayList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
try
{
itemView = convertView;
if (convertView == null){
itemView = inflater.from(parent.getContext()).inflate(R.layout.main_activity_item, parent, false);
viewHolder = new ViewHolder();
//if this is first time then inflate view
viewHolder.itemName = (TextView)itemView.findViewById(R.id.itemName);
itemView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder)itemView.getTag();
}
//set Data from ArrayList
viewHolder.itemName.setText(arrayList.get(position));
if (selectedItemArray.get(position).isSelectedItem()){
viewHolder.itemName.setBackgroundColor(activity.getResources().getColor(R.color.colorPrimaryDark));
}else{
viewHolder.itemName.setBackgroundColor(activity.getResources().getColor(R.color.colorPrimary));
}
notifyDataSetChanged();
return itemView;
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
public class ViewHolder
{
TextView itemName;
}
}
这是我的 RowObject.java
public class RowObject
{
public int position;
boolean isSelectedItem;
public RowObject(int position, boolean isSelectedItem) {
this.position = position;
this.isSelectedItem = isSelectedItem;
}
public int getPosition() {
return position;
}
public void setPosition(int position) {
this.position = position;
}
public boolean isSelectedItem() {
return isSelectedItem;
}
public void setSelectedItem(boolean isSelectedItem) {
this.isSelectedItem = isSelectedItem;
}
}
【问题讨论】:
-
你喜欢这个吗?请看answer
-
你会尝试什么?
-
Shailesh Limbadiya 我可以生成列表,但我不知道如何添加和显示子导航视图?
-
请分享您的 xml 和 java 文件。
-
请分享您的 RowObject 类代码
标签: android android-layout listview submenu