您的位置:首页 > 移动开发 > Android开发

Android GridView 横向滚动 一行显示

2013-05-30 17:35 288 查看
都知道gridview和listview是android比较重要的数据组件,

接到一个横向显示数据的任务,头大半天,最后只能用gridview试试了。呵呵,费了N多脑细胞,搞定。

=====

布局文件main.xml

[java] view
plaincopy

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#FFFFFF"

android:gravity="center">

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="向右滑动"

android:textColor="#000000"

android:textSize="20dip"/>

<HorizontalScrollView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:background="#CCCCCC">

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="horizontal">

<GridView

android:id="@+id/gridView"

android:layout_width="fill_parent"

android:layout_height="wrap_content" />

</LinearLayout>

</HorizontalScrollView>

</LinearLayout>

类文件MainActivity.java

[java] view
plaincopy

package com.test;

import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.content.Context;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.view.Window;

import android.widget.AdapterView;

import android.widget.BaseAdapter;

import android.widget.GridView;

import android.widget.ImageView;

import android.widget.TextView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.LinearLayout.LayoutParams;

public class MainActivity extends Activity {

private GridView gridView;

private List<Item> itemList;

private MyListAdapter adapter;

private ItemClickEvent listener;

private MyHandler handler;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

setContentView(R.layout.main);

gridView = (GridView) findViewById(R.id.gridView);

handler = new MyHandler();

new Thread() {

public void run() {

itemList = new ArrayList<Item>();

for(int i=0;i<10;i++){

Item item = new Item("北极熊生存如履薄冰" + i,"如果我们从现在开始就采取措施降低气温" + i);

itemList.add(item);

}

Message msg = Message.obtain();

msg.what = 1;

handler.sendMessage(msg);

}

}.start();

}

private class MyHandler extends Handler{

public void handleMessage(Message msg) {

switch (msg.what) {

case 1:

if ((itemList == null) || (itemList.size() == 0)) {

return;

} else {

LayoutParams params = new LayoutParams(itemList.size() * (420 + 6), LayoutParams.WRAP_CONTENT);

gridView.setLayoutParams(params);

gridView.setColumnWidth(420);

gridView.setHorizontalSpacing(6);

gridView.setStretchMode(GridView.NO_STRETCH);

gridView.setNumColumns(itemList.size());

adapter = new MyListAdapter(MainActivity.this);

listener = new ItemClickEvent();

gridView.setAdapter(adapter);

gridView.setOnItemClickListener(listener);

}

break;

}

}

}

private class MyListAdapter extends BaseAdapter {

private final String TAG = "MyListAdapter";

private LayoutInflater mInflater;

private final Context context;

public MyListAdapter(Context context) {

this.context = context;

mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}

public int getCount() {

return itemList.size();

}

public Object getItem(int position) {

return itemList.get(position);

}

public long getItemId(int position) {

return position;

}

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

Item item = itemList.get(position);

CellHolder cellHolder;

if (convertView == null) {

cellHolder = new CellHolder();

convertView = mInflater.inflate(R.layout.item, null);

cellHolder.ivIcon = (ImageView) convertView.findViewById(R.id.ivIcon);

cellHolder.tvTitle = (TextView) convertView.findViewById(R.id.tvTitle);

cellHolder.tvContent = (TextView) convertView.findViewById(R.id.tvContent);

convertView.setTag(cellHolder);

}else{

cellHolder = (CellHolder) convertView.getTag();

}

cellHolder.ivIcon.setImageResource(R.drawable.bear);

cellHolder.tvTitle.setText(item.getTitle());

cellHolder.tvContent.setText(item.getContent());

return convertView;

}

}

private class CellHolder{

ImageView ivIcon;

TextView tvTitle;

TextView tvContent;

}

private class ItemClickEvent implements OnItemClickListener{

public void onItemClick(AdapterView<?> parent, View view, int position,

long id) {

}

}

}

Item

[java] view
plaincopy

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:padding="10dip"

android:background="#FFFFFF">

<ImageView

android:id="@+id/ivIcon"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/icon"

android:layout_marginRight="10dip"/>

<LinearLayout

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

>

<TextView

android:id="@+id/tvTitle"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="标题标题标题标题标题"

android:textColor="#000000"

android:textSize="20dip"

android:textStyle="bold"/>

<TextView

android:id="@+id/tvContent"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="内容内容内容内容内容内容内容"

android:textColor="#000000"/>

</LinearLayout>

</LinearLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: