Android 为 ListView Item 自定义row

文章标签: android,android-listview
2014-12-25 13:09:57     人阅读    


我现在有一个 ListView 需要展示如下结构的行信息

HEADER
Text


HEADER 是静态的内容 , Text 内容几秒钟变化一次
我实现了一个主流的 String[] array,把它传给  ArrayAdapter ,并设置每个一段时间数据变化一次,刷新一下 listView
代码如下:

data_array = populat eString();

adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1,  data_array);

listView.setAdapter(adapter);

 

我的问题时,我现在展示不成功,达不到要求,我不知道如何显示上述数据.. 求个例子

处理方法

添加这个 row.xml 到你的 layout 目录


 

<?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:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="Header"/>
<TextView 
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:id="@+id/text"/>

</LinearLayout>


设置你的  main xml  布局如下

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
    android:orientation="horizontal" >
   <ListView
        android:id="@+id/listview"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent" >
     </ListView>
</LinearLayout>

 

你的适配器按照如下的方式写

class yourAdapter extends BaseAdapter {
    Context context;
     String[] data;
     private static LayoutInflater inflater = null;
    public yourAdapter(Context context, String[] data) {
        // TODO Auto-generated constructor stub
         this.context = context;
 
        this.data = data;
      inflater = (LayoutInflater) context
                 .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     }
    @Override
 
    public int getCount() {
 
        // TODO Auto-generated method stub
 
        return data.length;
 
    }



    @Override
 
    public Object getItem(int position) {
      // TODO Auto-generated method stub
         return data[position];
     }

    @Override
 
    public long getItemId(int position) {
 
        // TODO Auto-generated method stub
 
        return position;
 
    }
    @Override
 
    public View getView(int position, View convertView, ViewGroup parent) {
 
        // TODO Auto-generated method stub
 
        View vi = convertView;
 
        if (vi == null)
 
            vi = inflater.inflate(R.layout.row, null);
 
        TextView text = (TextView) vi.findViewById(R.id.text);
 
        text.setText(data[position]);
 
        return vi;
 
    }
}
}

 

你的activity 参考如下的格式

public class StackActivity extends Activity {



    ListView listview;



    /**   第一次被调用的时候创建*/
 
    @Override
 
    public void onCreate(Bundle savedInstanceState) {
 
        super.onCreate(savedInstanceState);
 
        setContentView(R.layout.main);
 
        listview = (ListView) findViewById(R.id.listview);
 
        listview.setAdapter(new yourAdapter(this, new String[] { "data1",
 
                "data2" }));
 
    }
}
}


原文地址:http://www.itmmd.com/201412/378.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

android开发中如何在一个activity中启动另一个app的activity   上一篇
下一篇  Android - Null pointer Exception - findViewById()
精彩回复
我要追加问题,请求站长解决!
姓名:       

《程序员app》专门为程序员量身定做!