Android 如何将简单列表项更改为修改列表项?

Android 如何将简单列表项更改为修改列表项?,android,listview,android-studio,Android,Listview,Android Studio,我想显示数据库中的3个字段,但我不知道simple\u list\u item\u 1 SQLiteDatabase db = dbcenter.getReadableDatabase(); cursor = db.rawQuery("SELECT * FROM TABLE", null); daftar = new String[cursor.getCount()]; cursor.moveToFirst(); for (int cc = 0; cc <

我想显示数据库中的3个字段,但我不知道
simple\u list\u item\u 1

SQLiteDatabase db = dbcenter.getReadableDatabase();
    cursor = db.rawQuery("SELECT * FROM TABLE", null);
    daftar = new String[cursor.getCount()];
    cursor.moveToFirst();
    for (int cc = 0; cc < cursor.getCount(); cc++) {
        cursor.moveToPosition(cc);
        daftar[cc] = cursor.getString(1).toString();
    }
    ListView01 = (ListView) view.findViewById(R.id.listView1);
    ListView01.setAdapter(new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, daftar));
    ListView01.setSelected(true);
SQLiteDatabase db=dbcenter.getReadableDatabase();
cursor=db.rawQuery(“从表中选择*”,null);
daftar=新字符串[cursor.getCount()];
cursor.moveToFirst();
对于(int cc=0;cc
在上面的视图中,代码显示表中的数据,但只显示一个字段


你能给我举个例子吗,当你调用
新的ArrayAdapter(…,android.R.layout.simple\u list\u item\u 1,…)
时,用3
替换为修改后的
列表\u item
,你告诉系统使用
android.R.layout.simple\u list\u item\u 1
来处理你的数据。如果这不起作用,实际上只有一个选择:自己处理膨胀和填充视图。您可以通过创建
ArrayAdapter
的自定义子类并重写
onCreateView()
来实现这一点

正式文件:

您还可以自定义集合中数据对象使用的视图类型。要自定义数据对象使用的视图类型,请覆盖
getView(int、view、ViewGroup)
并膨胀视图资源


创建一个名为custom_layout的xml,如

  <?xml version="1.0" encoding="utf-8"?>
  <TextView xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
    android:textSize="16sp" >
  </TextView>


使用like R.layout.custom\u layout而不是android.R.layout.simple\u list\u item\u 1

您可以创建带有3个文本视图的自定义列表视图

现在自定义列表视图布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/name"
        android:text="@string/name"
        android:textSize="20sp"
        android:layout_marginTop="19dp"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/price"
        android:layout_toStartOf="@+id/price"
        android:layout_marginRight="30dp"
        android:layout_marginEnd="30dp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/price"
        android:text="Price"
        android:textSize="20sp"
        android:layout_alignBaseline="@+id/name"
        android:layout_alignBottom="@+id/name"
        android:layout_centerHorizontal="true"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/stock"
        android:text="Stock"
        android:textSize="20sp"
        android:layout_alignBaseline="@+id/price"
        android:layout_alignBottom="@+id/price"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_marginRight="81dp"
        android:layout_marginEnd="81dp"/>
    </RelativeLayout>

在布局中创建列表视图,我在mainactivity布局中创建

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.pro.salman.customlistview.MainActivity">

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/list_item"/>

</RelativeLayout>

自定义列表视图类

public class CustomListView extends BaseAdapter {


    private ArrayList<HashMap<String,String>> list;
    private LayoutInflater mLayoutInflater;
    private Context mContext;

    public CustomListView(ArrayList<HashMap<String,String>> list,Context c) {
        this.list = list;
        this.mContext = c;
        mLayoutInflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

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


        View view = mLayoutInflater.inflate(R.layout.custom_list_view,parent,false);
        Holder h = new Holder();

            // set id's
        h.name = (TextView)(view.findViewById(R.id.name));
        h.price = (TextView)(view.findViewById(R.id.price));
        h.stock = (TextView)(view.findViewById(R.id.stock));

        HashMap<String,String> hashMap = new HashMap<>();
        hashMap = list.get(position);

        h.name.setText(hashMap.get("nameKey"));
        h.price.setText(hashMap.get("priceKey"));
        h.stock.setText(hashMap.get("stockKey"));


        return view;
    }


    private class Holder
    {
        TextView name;
        TextView price;
        TextView stock;
    }
}
公共类CustomListView扩展了BaseAdapter{
私有数组列表;
私人停车场平面布置;
私有上下文;
公共CustomListView(ArrayList列表,上下文c){
this.list=列表;
this.mContext=c;
mLayoutInflater=(LayoutInflater)mContext.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
}
@凌驾
public int getCount(){
返回list.size();
}
@凌驾
公共对象getItem(int位置){
返回位置;
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图=mLayoutInflater.FLATE(右布局.自定义列表视图,父视图,false);
保持架h=新保持架();
//设置id
h、 name=(TextView)(view.findviewbyd(R.id.name));
h、 price=(TextView)(view.findviewbyd(R.id.price));
h、 stock=(TextView)(view.findviewbyd(R.id.stock));
HashMap HashMap=新的HashMap();
hashMap=list.get(位置);
h、 name.setText(hashMap.get(“nameKey”);
h、 price.setText(hashMap.get(“priceKey”);
h、 stock.setText(hashMap.get(“stockKey”);
返回视图;
}
私人阶级持有者
{
文本视图名称;
文本视图价格;
TextView股票;
}
}
现在在活动课上

public class MainActivity extends AppCompatActivity {

private ListView mListView;
private ArrayList<HashMap<String,String>> mArrayList;




@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mArrayList = new ArrayList<HashMap<String, String>>();

    for(int i =0;i<20;i++)
    {
        HashMap<String,String> mHashMap = new HashMap<>();
        mHashMap.put("nameKey","name "+String.valueOf(i));
        mHashMap.put("priceKey","price "+String.valueOf(i));
        mHashMap.put("stockKey","stock "+String.valueOf(i));

        mArrayList.add(mHashMap);
    }


    mListView = (ListView)(findViewById(R.id.list_item));

    CustomListView customListView = new CustomListView(mArrayList,this);
    mListView.setAdapter(customListView);

}
}
public类MainActivity扩展了AppCompatActivity{
私有列表视图;
私人ArrayList结婚名单;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mArrayList=newarraylist();

对于(inti=0;我想要3,但是java的代码呢?你能给我一个例子吗?你能给我一个例子,用3和java代码将其替换为修改后的
list\u项