实现listView的不同布局item

本文介绍了一个安卓应用程序中实现讨论活动页面的方法。该页面包括顶部标题栏、滚动刷新列表视图及底部加入讨论按钮等组件,并通过不同布局展示讨论内容。代码展示了如何设置页面元素、初始化列表数据以及自定义适配器。

效果图:




(1).activity.java

public class Find_ActTalkActivity extends Activity {
    public final static String ACTIVITY_NAME="ACTIVITY_NAME"; //活动名称
    public final static String ACTIVITY_ID="ACTIVITY_ID";  // 活动id
    public final static String ACTIVITY_MANNUM = "ACTIVITY_MANNUM";//讨论人数
    public final static int TALK_TYPE_YOU = 0;
    public final static int TALK_TYPE_ME = 1;

    private PullToRefreshListView pullToRefresh;

    private List<Integer> talkList = new ArrayList<>();//测试

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_find__act_talk);

        Intent intent = getIntent();
        String activity_name = intent.getStringExtra(Find_ActTalkActivity.ACTIVITY_NAME);
        String man_num = intent.getStringExtra(Find_ActTalkActivity.ACTIVITY_MANNUM);

        ((TextView)findViewById(R.id.titleText)).setText(activity_name + "(" + man_num +")");

        pullToRefresh = (PullToRefreshListView) findViewById(R.id.list);
        ceshi();  //测试用
        TalkAdaper adaper = new TalkAdaper();
        pullToRefresh.setAdapter(adaper);

    }

    //测试用
    private void ceshi(){
        for(int i = 0;i < 40;i++){
            talkList.add((int)(Math.random() * 10));
        }
    }

    class TalkAsy extends AsyncTask<String ,Void, Boolean>{

        @Override
        protected Boolean doInBackground(String... params) {
            return null;
        }
    }

    class TalkAdaper extends BaseAdapter{
        private LayoutInflater inflater;

        public TalkAdaper(){
            inflater = LayoutInflater.from(Find_ActTalkActivity.this);
        }

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

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

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

        @Override
        public int getViewTypeCount() {
            return 2;
        }

        @Override
        public int getItemViewType(int position) {
            int type = talkList.get(position);
            if ((type%2)== 0){
                return TALK_TYPE_ME;
            }
            return TALK_TYPE_YOU;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder = null;
            int type = getItemViewType(position);
            if(convertView == null){
                switch (type){
                    case TALK_TYPE_YOU:
                        convertView = inflater.inflate(R.layout.talk_item_you,parent,false);
                        break;
                    case TALK_TYPE_ME:
                        convertView = inflater.inflate(R.layout.talk_item_me,parent,false);
                        break;
                }
                holder = new ViewHolder();
                holder.talk_time = (TextView) convertView.findViewById(R.id.talk_time);
                holder.talk_icon = (ImageView) convertView.findViewById(R.id.talk_icon);
                holder.talk_man = (TextView) convertView.findViewById(R.id.talk_man);
                holder.talk_content = (TextView) convertView.findViewById(R.id.talk_content);
                convertView.setTag(holder);
            }else{
                holder = (ViewHolder) convertView.getTag();
            }
            holder.talk_time.setVisibility(View.GONE);

            return convertView;
        }
    }

    private static class ViewHolder{
        private TextView talk_time;
        private TextView talk_man;
        private TextView talk_content;
        private ImageView talk_icon;
    }


    public void click(View view){
        switch (view.getId()){
            case  R.id.topButtonLeft:
                finish();
                break;
            case R.id.addTalk:
                Toast.makeText(this,"加入讨论",Toast.LENGTH_SHORT).show();
                break;
        }
    }


}

(2).布局文件 activity_find__act_talk.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"
    android:background="@drawable/dicuss_bg"
    tools:context="com.inetgoes.fangdd.activity.Find_ActTalkActivity">

    <RelativeLayout
        android:id="@+id/topbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:layout_margin="10dp"
        >

        <ImageView
            android:id="@+id/topButtonLeft"
            android:background="@drawable/nav_icon_back"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5.0dip"
            android:onClick="click"
            android:layout_centerVertical="true"
            />

        <TextView
            android:textSize="@dimen/TopBarTextSize"
            android:textColor="@android:color/white"
            android:gravity="center"
            android:id="@+id/titleText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:text="标题"
            android:layout_centerHorizontal="true"/>
    </RelativeLayout>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0.5dp"
        android:background="@android:color/white"/>

    <com.handmark.pulltorefresh.library.PullToRefreshListView
        xmlns:ptr="http://schemas.android.com/apk/res-auto"
        android:id="@+id/list"
        android:cacheColorHint="#00000000"
        android:listSelector="@drawable/listview_item_selector"
        android:divider="#19000000"
        android:dividerHeight="0dp"
        android:fadingEdge="none"
        android:fastScrollEnabled="false"
        android:footerDividersEnabled="false"
        android:headerDividersEnabled="false"
        android:smoothScrollbar="true"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        ptr:ptrDrawable="@drawable/default_ptr_flip"
        ptr:ptrAnimationStyle="flip"
        ptr:ptrHeaderBackground="@color/progress_backgroud"
        ptr:ptrHeaderTextColor="@color/floor_item_text_black"    />


    <TextView
        android:id="@+id/addTalk"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="加入讨论"
        android:gravity="center"
        android:onClick="click"
        android:clickable="true"
        android:textSize="@dimen/TitleTextSize"
        android:textColor="@android:color/white"
        android:background="@drawable/ab_bottom_solid_inetgoes_actionbar"/>


</LinearLayout>

(3).item布局文件

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

    <TextView
        android:id="@+id/talk_time"
        android:textSize="12sp"
        android:text="16:25:35"
        android:layout_gravity="center_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">


        <ImageView
            android:src="@drawable/touxiang"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/talk_icon" />

        <LinearLayout
            android:orientation="vertical"
            android:layout_marginLeft="8dp"
            android:layout_toRightOf="@id/talk_icon"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
                <TextView
                    android:id="@+id/talk_man"
                    android:text="王屎冲"
                    android:textColor="@android:color/white"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
            <TextView
                android:id="@+id/talk_content"
                android:text="后台在改接口后台在改接口后台在改接口"
                android:textSize="16sp"
                android:background="@drawable/reader_text_target"
                android:layout_width="wrap_content"
                android:textColor="@android:color/white"
                android:layout_height="wrap_content" />

        </LinearLayout>

    </RelativeLayout>


</LinearLayout>

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

    <TextView
        android:id="@+id/talk_time"
        android:textSize="12sp"
        android:text="16:25:35"
        android:layout_gravity="center_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">


        <ImageView
            android:layout_alignParentRight="true"
            android:src="@drawable/touxiang"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/talk_icon" />

        <LinearLayout
            android:orientation="vertical"
            android:layout_marginRight="8dp"
            android:layout_toLeftOf="@id/talk_icon"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
                <TextView
                    android:layout_gravity="right"
                    android:id="@+id/talk_man"
                    android:text="王屎冲"
                    android:textColor="@android:color/white"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
            <TextView
                android:id="@+id/talk_content"
                android:text="后台在改接口后台在改接口后台在改接口"
                android:textSize="16sp"
                android:background="@drawable/reader_text_target_me"
                android:layout_width="wrap_content"
                android:textColor="@android:color/white"
                android:layout_height="wrap_content" />

        </LinearLayout>

    </RelativeLayout>


</LinearLayout>


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值