首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android:ScorllViewAndListView冲突有关问题另一种解决方案

2012-09-25 
Android:ScorllViewAndListView冲突问题另一种解决方案直接贴代码 我不喜欢废话!看看吧! package com.jclt

Android:ScorllViewAndListView冲突问题另一种解决方案

直接贴代码 我不喜欢废话!看看吧!

package com.jclt.activity;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.util.DisplayMetrics;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import android.widget.AdapterView.OnItemClickListener;/** * 测试ScrollView和listview * @author TanRuixiang * @date 2011年8月2日, PM 03:05:08 */public class ScorllViewAndListViewActivity extends Activity {private ListView listView = null;private ListAdapter listAdapter = null;private List<Map<String,Object>> list = null ;private float density = 0 ;     /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        //绑定ID到控件上面        listView = (ListView)findViewById(R.id.listview);        DisplayMetrics metrics = new DisplayMetrics();        getWindowManager().getDefaultDisplay().getMetrics(metrics);        density = metrics.density;        initDate();    }    /**     * 拿到整个数据List的大小</br>     * 如果List不等于空 或者 List的大小大于零</br>     * 实例化一个自定义的适配器,把自定义的适配器绑定到控件ListView上面</br>     * 实例化一个自定义的监听器,把自定义的监听器绑定到控件ListView上面</br>     * 判断屏幕的密度 </br>     * 如果密度小于1.0 密度等于1.5</br>     * 就给ListView手动设置宽度和高度</br>     */    private void initDate(){    list = getData();    if(list != null && list.size() > 0){    //SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.list_item, new String[]{"name","age"}, new int[]{R.id.textviewName,R.id.textviewAge});    listAdapter = new ListAdapter(this);    listView.setAdapter(listAdapter);    listView.setOnItemClickListener(new OnclickListVieListener());    if(density < 1.0 || density == 1.5){    listView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, (int) (list.size() * 48 * density)));    } else{    listView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, (int) (list.size() * 47 * density)));    }    }    }    /**     *  获取到数据(此数据类型是一个List集合,List集合中是一个Map(通过键值对来获取Map中的数据))     * @return list     */   /* private List<Map<String, Object>> getData() {List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();Map<String, Object> map = new HashMap<String, Object>();map.put("name", "yuanshouhui");map.put("pass", "123456");list.add(map);map = new HashMap<String, Object>();map.put("name", "tanglong");map.put("pass", "123456");list.add(map);map = new HashMap<String, Object>();map.put("name", "zhuangsan");map.put("pass", "123456");list.add(map);map = new HashMap<String, Object>();map.put("name", "xiaoyuan");map.put("pass", "123456");list.add(map);map = new HashMap<String, Object>();map.put("name", "xiaoqiang");map.put("pass", "123456");list.add(map);map.put("name", "yuanshouhui");map.put("pass", "123456");list.add(map);map = new HashMap<String, Object>();map.put("name", "tanglong");map.put("pass", "123456");list.add(map);map = new HashMap<String, Object>();map.put("name", "zhuangsan");map.put("pass", "123456");list.add(map);map = new HashMap<String, Object>();map.put("name", "xiaoyuan");map.put("pass", "123456");list.add(map);map = new HashMap<String, Object>();map.put("name", "xiaoqiang");map.put("pass", "123456");list.add(map);map.put("name", "yuanshouhui");map.put("pass", "123456");list.add(map);map = new HashMap<String, Object>();map.put("name", "tanglong");map.put("pass", "123456");list.add(map);return list;}*/    private List<Map<String, Object>> getData(){    List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();    for (int i = 0; i < 30; i++) {    Map<String, Object> map = new HashMap<String, Object>();    map.put("name", "name"+i);    map.put("age", "age"+i);    list.add(map);}    return list;    }    /**     * 设置监听器(给ListView每一个Item设置一个监听器)     * @author TanRuixiang     * @date 2011年8月2日, PM 03:05:08     */    class OnclickListVieListener implements OnItemClickListener{@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {Toast.makeText(getApplicationContext(), "第"+arg2+"个触发监听器", 0).show();}        }    /**     * 设置一个适配器(把该适配器绑定到ListView上面)     * @author TanRuixiang     * @date 2011年8月2日, PM 03:05:08     */class ListAdapter extends BaseAdapter{       private LayoutInflater inflater ;        public ListAdapter(Context context){       this.inflater = LayoutInflater.from(context);       }@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}        public final class Holder{        TextView gridName;TextView gridPrice;        }@Overridepublic View getView(int position, View convertView, ViewGroup parent) {Holder holder ; if(convertView == null){holder = new Holder();convertView = inflater.inflate(R.layout.list_item, null);holder.gridName = (TextView)convertView.findViewById(R.id.textviewName);holder.gridPrice = (TextView)convertView.findViewById(R.id.textviewAge);convertView.setTag(holder);}else{holder =(Holder)convertView.getTag();} holder.gridName.setText(("姓名:")+(String)list.get(position).get("name")); System.out.println(holder.gridName.getText());holder.gridPrice.setText(("年龄:")+(String)list.get(position).get("age"));return convertView;}        }}

?

<?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"    >    <TextView android:id="@+id/textviewName"      android:layout_width="fill_parent"      android:layout_height="wrap_content"      />      <TextView android:id="@+id/textviewAge"      android:layout_width="fill_parent"      android:layout_height="wrap_content"      />    </LinearLayout>

?

<?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"    ><ScrollView android:id="@+id/scorllview" android:layout_width="wrap_content" android:layout_height="wrap_content" > <LinearLayout android:orientation="vertical"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   >   <ListView android:id="@+id/listview"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:dividerHeight="1dip"   ></ListView>   </LinearLayout> </ScrollView> </LinearLayout>

??

热点排行