listView里面定义了几个自定义控件,然后发现点击的时候listView item click不管用了,被子控件监听了。。。。
点击里面内容,白色的文字被自定义控件TextView监听,白色的图片被gridview item监听
然后,百度谷歌一下,
在整个父布局上,加上
android:descendantFocusability="blocksDescendants"这个属性有三个值,
第三个是覆盖子控件直接覆盖焦点,然后test一下,发现子如果设置了
这个,那么listView就取不到焦点了,注释掉就取到了。
以上为1
-----------------------------------------------------------------------------------
纠结了好几天的问题,
listView里面有动态的图片,微博配图什么的,有的一张有的两张有的三四五六九张,而且还是网络图片,
一开始,直接
。。。。一开始是直接setViewBinder,然后自定义了一个ViewBinder,
发现里面的内容串行,折腾了好几天,去群里求救,得到了专业名词------>乱窜!
- /*
- * (non-Javadoc)
- *
- * @see
- * android.widget.SimpleAdapter.ViewBinder#setViewValue(android.view.View,
- * java.lang.Object, java.lang.String)
- */
- @Override
- public boolean setViewValue(View view, Object data,String textRepresentation) {
- try {
- Logger.e("viewBinder单独方法");
- LinearLayout ll = null;
- ArrayList<String> list = null;
- Logger.w("进入数据绑定:"+view+"data"+data+"网图:"+(view instanceof ImageView && data instanceof Bitmap)+
- "多图:"+(view instanceof LinearLayout && data instanceof ArrayList)+"转发:"+(view instanceof LinearLayout && data instanceof Status));
- // if(null == data)return false;
- if (view instanceof ImageView && data instanceof Bitmap) {
- Logger.e("bind----网图");
- // 网图
- ImageView iv = (ImageView) view;
- iv.setImageBitmap((Bitmap) data);
- return true;
- } else if (view instanceof LinearLayout && data instanceof ArrayList) {
- Logger.e("bind---- 多图:"+data);
- // 多图
- ll = (LinearLayout) view;
- list = (ArrayList<String>) data;
- loadImageSync(ll,list);
- return true;
- } else if (view instanceof LinearLayout && data instanceof Status) {
- // 转发
- Status s = (Status) data;
- Logger.e("bind---- 转发:"+s.id);
- list = s.pic_urls;
- if (!"-1".equals(s.id)) {
- ll = (LinearLayout) view;
- ll.setBackgroundResource(R.drawable.timeline_retweet_background_highlighted);
- TextView tv = new TextView(context);
- tv.setText(Html.fromHtml("@" + s.user.name + ":" + s.text));
- ll.addView(tv);
- if (null != list && (!list.isEmpty())) {
- loadImageSync(ll,list);
- }
- }
- return true;
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return false;
- }
- //TODO 该方法有问题,会造成转发微博加载显示两条
- private void loadImageSync(final LinearLayout ll, final ArrayList<String> list){
- new Thread(new Runnable() {
- @Override
- public void run() {
- for ( String str : list) {
- //Logger.w("for循环图片地址:"+str);
- Bitmap bt = GeneralUtils.getBitmap(str);
- final ImageView iv = new ImageView(context);
- iv.setImageBitmap(bt);
- final TextView tv = new TextView(context);
- tv.setText(str);
- ll.post(new Runnable() {
- @Override
- public void run() {
- Logger.e("布局:"+ll.getId() +"增加"+tv.getText());
- ll.addView(iv);
- ll.addView(tv);
- }
- });
- }
- }
- }).start();
- }
然后试了在初始化adapter的时候初始化布局等等,发现都不行。。
深思良久,终于决定自定义View,图片使用GridView加载。
然后重写了适配器,在适配器里做的viewBinder判断,
好吧,重新看了下,自定义的adapter代码虽然,只不过是直接把SimpleAdapter copy了一下。。。。。
关键还是回到以前这个。
然后会跳到自定义的视图那里
终究在里面完美的执行了啪啪啪~
以上是第二个问题
------------------------------------
现在发现gridView如果图片少的话填充不满,
感觉像面国旗
找了很多方法
试的恶心。。。。
怎么办。。。。。
屮
留待解决!
--
senRsl
2014-04-18 22:46
GMT+8 @Beijing Tongzhou
senRsl
2014-04-18 22:46
GMT+8 @Beijing Tongzhou
没有评论 :
发表评论