【问题标题】:How to show a layout containing buttons on clicking a row in a ListView generated using simpleAdapter in android?如何在使用 android 中的 simpleAdapter 生成的 ListView 中单击一行时显示包含按钮的布局?
【发布时间】:2014-04-30 07:52:38
【问题描述】:

我使用SimpleAdapter 生成了一个ListView。我在父LinearLayout 中有2 个孩子RelativeLayouts。我最初使 id 为彩色的布局不可见。

我想在单击listview 行时显示此布局。我已经完成了以下编码,但它的问题是无论我单击哪一行,彩色布局都只会在第一行而不是单击的行上可见。

谁能指导我一步一步怎么做?我的代码如下:

senttask.java

public class senttask extends Fragment {

    public senttask() {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.sentaskfragment, container,
                false);
        String font="font/Dosis-SemiBold.otf";
        //String font2="font/Dosis-SemiBold.otf";
        final Typeface tp=Typeface.createFromAsset(getActivity().getAssets(), font);
ListView sent=(ListView)view.findViewById(R.id.listViewtasksent);
  final Databasehandler2 db=new Databasehandler2(getActivity().getApplicationContext());
  HashMap<String, String> c=db.getAddedContacts();

  String name=c.get("ph");
 ArrayList<HashMap<String, String>>val=new ArrayList<HashMap<String,String>>();
 val=db.getTaskSent(name);

  ListAdapter k=new SimpleAdapter(getActivity(),val,R.layout.senttaskdata2,new String[]{"rname","heading","desc","id","path","receiver","sender"},new int[]{R.id.textView1,R.id.textView2,R.id.textView3,R.id.hide1,R.id.hide2,R.id.hide3,R.id.hide4})
  {

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        final View v = super.getView(position, convertView, parent);
        TextView myname=(TextView)v.findViewById(R.id.textView1);
        TextView mydes=(TextView)v.findViewById(R.id.textView2);
        TextView mytopic=(TextView)v.findViewById(R.id.textView3);


        myname.setTypeface(tp);
        mydes.setTypeface(tp);
        mytopic.setTypeface(tp);

        return v;
    }

  };
  sent.setAdapter(k);

  sent.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        // TODO Auto-generated method stub

        RelativeLayout r=(RelativeLayout)arg0.findViewById(R.id.colorful);
        r.setVisibility(arg0.VISIBLE);


    }
});
        return view;

    }
}

senttaskdata2.xml

     <?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" >

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="70dp"

    android:background="@android:color/transparent" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="8dp"
        android:src="@drawable/test2" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_below="@+id/textView2"
        android:text="TextView"
        android:textColor="@android:color/darker_gray"
        android:textSize="11sp" />

    <TextView
        android:id="@+id/hide1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/textView1"
        android:layout_alignParentRight="true"
        android:text="Small Text"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:visibility="gone" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_toRightOf="@+id/imageView1"
        android:text="TextView"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/imageView1"
        android:layout_toRightOf="@+id/imageView1"
        android:text="TextView"
        android:textColor="@android:color/darker_gray"
        android:textSize="11sp" />

</RelativeLayout>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="70dp" 
    android:visibility="gone"
    android:id="@+id/colorful"
    >

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="80dp"
        android:layout_height="70dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:background="@color/dblue"
        android:src="@drawable/ic_status" />

    <ImageView
        android:id="@+id/ImageView01"
        android:layout_width="80dp"
        android:layout_height="70dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:background="@color/dblue"
        android:src="@drawable/ic_status" />

    <ImageView
        android:id="@+id/ImageView02"
        android:layout_width="80dp"
        android:layout_height="70dp"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/imageView2"
        android:background="@color/yellow"
         android:adjustViewBounds="true"
          android:scaleType="centerInside"
        android:src="@drawable/ic_reminder" />

    <ImageView
        android:id="@+id/ImageView03"
        android:layout_width="80dp"
        android:layout_height="70dp"
         android:adjustViewBounds="true"
        android:layout_alignParentTop="true"
         android:scaleType="centerInside"
        android:layout_toRightOf="@+id/ImageView02"
        android:background="@color/green"
        android:src="@drawable/ic_action_edit" />

    <ImageView
        android:id="@+id/ImageView04"
        android:layout_width="80dp"
        android:layout_height="70dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:background="@color/dblue"
         android:adjustViewBounds="true"
          android:scaleType="centerInside"
        android:src="@drawable/ic_status" />

    <ImageView
        android:id="@+id/ImageView05"
        android:layout_width="80dp"
        android:layout_height="70dp"
         android:scaleType="centerInside"
         android:adjustViewBounds="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:background="@color/red"
        android:src="@drawable/del" />

</RelativeLayout>

senttaskfragment.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="vertical" >

<ListView
    android:id="@+id/listViewtasksent"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    >
</ListView>

【问题讨论】:

    标签: android android-layout android-listview simpleadapter


    【解决方案1】:

    线条:

    RelativeLayout r=(RelativeLayout)arg0.findViewById(R.id.colorful);
    r.setVisibility(arg0.VISIBLE);
    

    将始终从ListView 的第一个可见 行引用RelativeLayout,因为arg0 代表ListView(所有行都以相同的ID 结束,所以第一次出现将返回具有该 ID 的视图)。而不是在整个ListView 中查找目标RelativeLayout,您需要在实际单击的行视图中查找它,该行视图也作为arg1 参数传入该回调。这样您将拥有:

    RelativeLayout r=(RelativeLayout)arg1.findViewById(R.id.colorful);
    r.setVisibility(arg0.VISIBLE);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      • 2012-01-13
      相关资源
      最近更新 更多