有两个adapter,一个给listview,一个给spinner 可以确定的是,数据能绑到adapter上,并且adapter有几组数据就会加载几组,但最后所有item的内容都变成了绑定数据里的最后一组··· public class fagmentIndex extends Fragment{ RefreshableView refreshableView; ListView indexlistView; private SimpleAdapter mAdapter; private SimpleAdapter carAdapter; private List<HashMap<String, Object>> carHashMaps;//这两行是给spinner的 private HashMap<String, Object> carmap; private List<HashMap<String, Object>> mHashMaps;//这两行用给可刷新的那个listview private HashMap<String, Object> map; private int mCurrentSelectedPosition = 1; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { //在这里定义Fragment的布局 View view=inflater.inflate(R.layout.fragment2, container,false); Spinner sp1 =(Spinner) view.findViewById(R.id.spinnerAdapter); carAdapter = new SimpleAdapter(getActivity(), carData(), R.layout.list_item_car, new String[]{"cartittle", "cartext1", "cartext2"}, new int[]{R.id.my_car_name, R.id.my_car_lis, R.id.my_car_condition});//对spinner进行配置 sp1.setAdapter(carAdapter); //以下为刷新功能listview refreshableView = (RefreshableView) view.findViewById(R.id.refreshable_view); indexlistView = (ListView) view.findViewById(R.id.list_view); indexlistView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { } }); mAdapter = new SimpleAdapter(getActivity(), getData(), R.layout.list_item_index, new String[]{"tittle", "text1","text2"}, new int[]{R.id.my_item_name, R.id.my_list_text1,R.id.my_list_text2}); indexlistView.setAdapter(mAdapter); indexlistView.setItemChecked(mCurrentSelectedPosition, true); refreshableView.setOnRefreshListener(new PullToRefreshListener() { @Override public void onRefresh() { try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } refreshableView.finishRefreshing(); } }, 0); return view; } private List<HashMap<String, Object>> getData() { //这是给listview用的 mHashMaps = new ArrayList<HashMap<String,Object>>(); map = new HashMap<String, Object>(); map.put("tittle", "昵称"); map.put("text1", "AAAAA"); map.put("text2", "VVVVV"); mHashMaps.add(map); map.put("tittle", "DDDDD"); map.put("text1", "CCCCC"); map.put("text2", "EEEEE"); mHashMaps.add(map); map.put("tittle", "昵称"); map.put("text1", "FFFFF"); map.put("text2", "VVVVV"); mHashMaps.add(map); return mHashMaps; } private List<HashMap<String, Object>> carData() { /这是给spinner用的 carHashMaps = new ArrayList<HashMap<String,Object>>(); carmap = new HashMap<String, Object>(); carmap.put("cartittle", "昵称"); carmap.put("cartext2","AAA"); carmap.put("cartext1", "CCCC"); carHashMaps.add(carmap); carmap.put("cartittle", "DDDDD"); carmap.put("cartext2","BBB"); carmap.put("cartext1", "CCCC"); carHashMaps.add(carmap); return carHashMaps; } } 然后附上相关的xml布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ededed" android:orientation="vertical" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="0dp" android:layout_marginTop="0dp" android:background="#fff" android:orientation="horizontal"> <Spinner android:id="@+id/spinnerAdapter" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:layout_marginBottom="8dp" android:layout_weight="1" /> </LinearLayout> <!-- 查找相关属性 --> <com.yoco_tech.app.carpass.RefreshableView android:id="@+id/refreshable_view" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_below="@+id/linearLayout1"> <ListView android:layout_marginTop="10dp" android:id="@+id/list_view" android:layout_width="fill_parent" android:layout_height="fill_parent" > </ListView> </com.yoco_tech.app.carpass.RefreshableView> </RelativeLayout> |
|
#1 |
第一个问题已解决。
在以下内容中,每次绑定数据(put(“”,“”))之前,都要重新carmap = new HashMap<String, Object>();一下。 private List<HashMap<String, Object>> carData() { carHashMaps = new ArrayList<HashMap<String,Object>>(); carmap = new HashMap<String, Object>(); carmap.put("cartittle", "昵称"); carmap.put("cartext2","AAA"); carmap.put("cartext1", "CCCC"); carHashMaps.add(carmap); carmap = new HashMap<String, Object>(); carmap.put("cartittle", "DDDDD"); carmap.put("cartext2","BBB"); carmap.put("cartext1", "CCCC"); carHashMaps.add(carmap); return carHashMaps; } 但还有个问题,就是这个代码里那个spinner感觉很不灵敏,然后点开以后没反应····是必须要重写一下onTouch啥的么 |
#230分 |
你都只创建了一个HashMap<String, Object>();对象
下面的数据都是更新的他,当然是相同数据了 |
#3 |
回复2楼: 嗯嗯谢谢,确实是这样,我自己对比了和之前正常显示的代码,加了这一句果然就好辣~ 于是现在还有一个问题,就是那个spinner,之前没有加adapter用着好好的·····加了adapter以后感觉点开它比较费力,然后点开以后再点击列表项里的东西就没反应了,找了一些监听方法,还是解决不了····· 我希望实现的是点了它以后,它替换掉spinner那里默认的内容,然后我会调用下面的刷新函数···可以帮忙看看么? |
#4 |
那个spinner绑定的adapter用的布局是这样一个简单的线性layout内嵌三个textview,设置了可点击,然而并没有什么用···
<?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="horizontal" > <TextView android:id="@+id/my_car_name" android:textSize="16sp" android:layout_width="0dp" android:gravity="center" android:layout_gravity="center_vertical" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:layout_marginBottom="8dp" android:layout_weight="1" android:clickable="true" android:focusable="true" android:labelFor="@+id/carInfo2" android:text="@string/carinfo2" > </TextView> <TextView android:id="@+id/my_car_lis" android:textSize="16sp" android:layout_width="0dp" android:gravity="center" android:layout_gravity="center_vertical" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:layout_marginBottom="8dp" android:layout_weight="1" android:clickable="true" android:focusable="true" android:labelFor="@+id/carInfo3" android:text="@string/carinfo3" > </TextView> <TextView android:id="@+id/my_car_condition" android:textSize="16sp" android:layout_width="0dp" android:gravity="center" android:layout_gravity="center_vertical" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:layout_marginBottom="8dp" android:layout_weight="1" android:clickable="true" android:focusable="true" android:labelFor="@+id/carInfo3" android:text="@string/carinfo3" > </TextView> </LinearLayout> |
#610分 |
原始的SimpleAdapter使用list提供数据好像是有问题的,用String[]提供数据是正常的
|
#7 |
回复6楼: 唔昨天搜其他关键字的时候意外搜索到Listview内部组件与listview抢焦点这么一个概念,我的listview里面嵌套了三个textview,listview的焦点会被它们抢走,而textview我并没有监听点击事件,于是模拟起来就显得spiner很不灵敏 这种情况,如果内部组件不需要设监听的话,可以直接focusable和clickable(是这样拼的吧)直接改成false,然后listview就好啦~ |