我是android新手并尝试使用this创建一个导航抽屉。
要显示左侧抽屉中的菜单项,我正在执行此操作
DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
List<DataItems> myTest = myDbAdapter.getValuesFromDb(); // method in DbAdapter class
// to get records from db.
// Pass the data to ListView adapter
MyNavigationDrawerAdapter adapter = new MyNavigationDrawerAdapter(
this,
R.layout.drawer_listview_item,
myTest);
// Set the adapter for the list view
mDrawerList.setAdapter(adapter);
它工作正常,但我想在Navigation抽屉中添加几个静态值,它们始终保持不变,在这些值之后我想显示从数据库中获取的值。
我几乎到处搜索,但找不到任何解决办法。
答案 0 :(得分:0)
您正在使用的ArrayAdapter是一种从数组中创建不同字符串列表的简单方法。但它也仅限于这样做。根据您的需要,有不同的方式。我看到你有两个选择。更改数据库中的值并继续使用单个TextView。或者,如果您想要更高级的列表,则应创建一个扩展BaseAdapter的新类。并将适配器设置为此。
public class MyAdapter extends BaseAdapter{
Context mCtx;
List<DataItems> mData;
public MyAdapter(Context context, List<DataItems> myTest) {
mCtx = context;
mData = myTest;
}
@Override
public int getCount() {
return mData.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ItemHolder holder;
if (convertView == null) {
convertView = new ItemHolder().getView();
}
holder = convertView.getTag();
holder.update(mData.get(position).toString());
return holder.getView();
}
private class ItemHolder {
LinearLayout layout;
TextView txt;
public ItemHolder() {
layout = View.inflate(mCtx, R.layout.item, null);
txt = (TextView) layout.findViewById(R.id.text_name)
layout.setTag(this);
}
public void update(String s) {
txt.setText(s);
}
public LinearLayout getView() {
return layout;
}
}
}
项目布局
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/text_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
使用此代码,您只需要更改ItemHolder及其xml文件,使其看起来更像您想要的内容。 setTag()和getTag()用于重用视图并使其更有效。
请注意,Android L为此发布了新的小部件,但它尚不支持。 https://developer.android.com/preview/material/ui-widgets.html