【问题标题】:listview with arraylist in android - each row 2 itemsandroid中带有arraylist的listview - 每行2个项目
【发布时间】:2015-10-09 06:39:32
【问题描述】:

我通过以下方式在数据库中填充我的数组列表:

db.addBookMark(new BookMark("Ravi", "9100000000"));
db.addBookMark(new BookMark("Srinivas", "9199999999"));
db.addBookMark(new BookMark("Tommy", "9522222222"));
db.addBookMark(new BookMark("Karthik", "9533333333"));

并通过以下方式读取(数据库中的所有项目):

    // Reading all contacts
    List<BookMark> bookmarks = db.getAllBookMarks();

我创建了一个 xml 布局 listview.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.wepars.webapp.activity.MsgActivity">

    <include
        android:id="@+id/tool_bar"
        layout="@layout/tool_bar"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        />


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

</LinearLayout>

还有行项目row_item.xml

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

    <TextView
        android:id="@+id/message"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />

    <TextView
        android:id="@+id/number"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
      />

</LinearLayout>

我之前读过this question..但它适用于一个简单的列表。如何在 listview 中发布我的 2 钻石列表?

我尝试完成这段代码:

public class BookMarkActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listview);

        DatabaseBookMark db = new DatabaseBookMark(this);
        Log.d("Insert: ", "Inserting ..");
        db.addBookMark(new BookMark("Ravi", "9100000000"));
        db.addBookMark(new BookMark("Srinivas", "9199999999"));
        db.addBookMark(new BookMark("Tommy", "9522222222"));
        db.addBookMark(new BookMark("Karthik", "9533333333"));
        // Reading all contacts
        List<BookMark> bookmarks = db.getAllBookMarks();

    }
}

【问题讨论】:

  • 您的代码中的 2 钻石列表 在哪里???粘贴正确的代码。
  • @Clairvoyant 例如,对于我想在 Textview(id=message)中显示“Ravi”和在另一个 Textview(id=number)中显示“9100000000”的每一行......我编辑了我的代码跨度>
  • 您是否创建了adapter 并将array 或arraylist 传递给它??

标签: android listview android-listview


【解决方案1】:

请检查此链接。

对你有帮助

Click here to see the example

【讨论】:

    【解决方案2】:

    你必须扩展一个 ArrayAdapter

    public class BookmarkAdapter extends ArrayAdapter<BookMark> {
    
        public BookmarkAdapter(Activity activity,
                ArrayList<BookMark bookmark) {
            super(activity, R.layout.row_item, bookmark);
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            final BookMark b = getItem(position);
            ViewHolder viewHolder;
            if (convertView == null) {
                viewHolder = new ViewHolder();
                LayoutInflater inflater = LayoutInflater.from(getContext());
                convertView = inflater.inflate(R.layout.row_item, parent,
                        false);
                viewHolder.message= (TextView) convertView.findViewById(R.id.message);
                viewHolder.number= (TextView) convertView
                        .findViewById(R.id.number);
                convertView.setTag(viewHolder);
            } else {
                viewHolder = (ViewHolder) convertView.getTag();
            }
    
            viewHolder.message.setText(b.message);
            viewHolder.number.setText(b.number);
            return convertView;
        }
    
        private class ViewHolder {
            TextView message, number;
        }
    }
    

    并像这样使用它

    public class BookMarkActivity extends ActionBarActivity { 
        @Override 
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.listview);
    
            DatabaseBookMark db = new DatabaseBookMark(this);
            Log.d("Insert: ", "Inserting ..");
            db.addBookMark(new BookMark("Ravi", "9100000000"));
            db.addBookMark(new BookMark("Srinivas", "9199999999"));
            db.addBookMark(new BookMark("Tommy", "9522222222"));
            db.addBookMark(new BookMark("Karthik", "9533333333"));
            // Reading all contacts 
            ArrayList<BookMark> bookmarks = db.getAllBookMarks();
    
            // ADDED
            ListView lv = (ListView) findViewById(R.id.list_view);
            lv.setAdapter(new BookmarkAdapter(this,bookmarks));
    
        } 
    } 
    

    【讨论】:

    • 乐于助人
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 2015-02-05
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    相关资源
    最近更新 更多