|
有两个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就好啦~ |