列表视图与ArrayList的android系统 - 每行2项 [英] listview with arraylist in android - each row 2 items

查看:218
本文介绍了列表视图与ArrayList的android系统 - 每行2项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我这个填补DB我的数组列表:

  db.addBookMark(新书签(拉维,91亿));
db.addBookMark(新的书签(SRINIVAS,9199999999));
db.addBookMark(新的书签(汤米,9522222222));
db.addBookMark(新的书签(KARTHIK,9533333333));

和本读取(从数据库中的所有项目):

  //读取所有联系人
    清单<书签及GT;书签= db.getAllBookMarks();

和我创建一个XML布局listview.xml

 < LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    的xmlns:工具=htt​​p://schemas.android.com/tool​​s
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    机器人:方向=垂直
    工具:上下文=com.wepars.webapp.activity.MsgActivity>    <包括
        机器人:ID =@ + ID / tool_bar
        布局=@布局/ tool_bar
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_width =match_parent
        />
    < ListView控件
        机器人:ID =@ + ID / list_view
        机器人:layout_width =FILL_PARENT
        机器人:layout_height =WRAP_CONTENT>< /&的ListView GT;< / LinearLayout中>

和还行项目row_item.xml

 <?XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    机器人:方向=垂直>    <的TextView
        机器人:ID =@ + ID /消息
        机器人:layout_width =FILL_PARENT
        机器人:layout_height =WRAP_CONTENT
        />    <的TextView
        机器人:ID =@ + ID /号码
        机器人:layout_width =FILL_PARENT
        机器人:layout_height =WRAP_CONTENT
      />< / LinearLayout中>

我读<一个href=\"http://stackoverflow.com/questions/18628831/listview-with-arraylist-simple-adapter-in-android\">this问题 before..But它适用于一个简单的列表。我怎么能发表我的2钻石名单列表视图?

我试图完成这个code:

 公共类BookMarkActivity扩展ActionBarActivity {
    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.listview);        DatabaseBookMark DB =新DatabaseBookMark(本);
        Log.d(插入,插入..);
        db.addBookMark(新的书签(拉维,91亿));
        db.addBookMark(新的书签(SRINIVAS,9199999999));
        db.addBookMark(新的书签(汤米,9522222222));
        db.addBookMark(新的书签(KARTHIK,9533333333));
        //读取所有联系人
        清单&LT;书签及GT;书签= db.getAllBookMarks();    }
}


解决方案

您必须扩展一个ArrayAdapter

 公共类BookmarkAdapter扩展ArrayAdapter&LT;书签及GT; {    公共BookmarkAdapter(活动活动,
            ArrayList的&LT;收藏书签){
        超(活动,R.layout.row_item,书签);
    }    @覆盖
    公共查看getView(INT位置,查看convertView,父母的ViewGroup){
        最终收藏B =的getItem(位置);
        ViewHolder viewHolder;
        如果(convertView == NULL){
            viewHolder =新ViewHolder();
            LayoutInflater充气= LayoutInflater.from(的getContext());
            convertView = inflater.inflate(R.layout.row_item,父母,
                    假);
            viewHolder.message =(TextView中)convertView.findViewById(R.id.message);
            viewHolder.number =(TextView中)convertView
                    .findViewById(R.id.number);
            convertView.setTag(viewHolder);
        }其他{
            viewHolder =(ViewHolder)convertView.getTag();
        }        viewHolder.message.setText(b.message);
        viewHolder.number.setText(b.number);
        返回convertView;
    }    私有类ViewHolder {
        TextView的消息,编号;
    }
}

和使用它像这样

 公共类BookMarkActivity扩展ActionBarActivity {
    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.listview);        DatabaseBookMark DB =新DatabaseBookMark(本);
        Log.d(插入,插入..);
        db.addBookMark(新的书签(拉维,91亿));
        db.addBookMark(新的书签(SRINIVAS,9199999999));
        db.addBookMark(新的书签(汤米,9522222222));
        db.addBookMark(新的书签(KARTHIK,9533333333));
        //读取所有联系人
        ArrayList的&LT;书签及GT;书签= db.getAllBookMarks();        // 添加
        LV的ListView =(ListView控件)findViewById(R.id.list_view);
        lv.setAdapter(新BookmarkAdapter(这一点,书签));    }
}

I fill my Array list in DB by this:

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

And read (all items from DB) by this:

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

and I create a xml layout 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>

and also rows item 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>

I read this question before..But it works for a simple list. how can I publish my 2 diamond list in listview?

I try complete this code:

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();

    }
}

解决方案

You have to extend an 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;
    }
}

and use it like this

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));

    } 
} 

这篇关于列表视图与ArrayList的android系统 - 每行2项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆