【问题标题】:can't get reference with include tag无法使用包含标签获取参考
【发布时间】:2015-07-07 14:16:07
【问题描述】:

我开发了一个应用程序。在我的应用程序中有: Product.java(片段) product.xml(包含一个列表视图和一个包含标签) list_single(列表视图的行)

这是我的代码:

Product.java

public class Product extends Fragment{

    public int ITEM_SELECTED = 1;
    ArrayAdapter<String> PROD;

    @Nullable
    @Override

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.product, container, false);

        String [] ELEMENTS1 = {
            "A","b","c"};

        ListView listView = (ListView)v.findViewById(R.id.listView);

        TextView a = (TextView)v.findViewById(R.id.textView);
        ImageButton add_cart = (ImageButton)v.findViewById(R.id.button2);
        switch(ITEM_SELECTED){

            case 1: PROD = new ArrayAdapter<String>(getActivity(), R.layout.single_row, R.id.textView, ELEMENTS1);break;

        }
        listView.setAdapter(PROD);

        add_cart.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Log.d("asd","asd");
           }
        });
        return v;
    }

}

产品.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff"
    android:id="@+id/layout">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="PRODOTTI"
        android:id="@+id/textView10"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="35dp"
        android:textColor="#000"
        android:textSize="20dp"
        android:textStyle="bold"
        android:typeface="monospace" />

    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="@android:color/darker_gray"
        android:layout_marginTop="85dp"
        android:id="@+id/view1"
        android:layout_centerHorizontal="true"
        android:layout_marginLeft="35dp"
        android:layout_marginRight="35dp" />

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listView"
        android:layout_below="@+id/view1"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:layout_marginRight="10dp" />

    <include layout="@layout/single_row"
        android:id="@+id/ly"
        android:visibility="gone"/>

</RelativeLayout>

这是 list_single.xml

<?xml version="1.0" encoding="utf-8"?>

<EditText
    android:layout_width="40dp"
    android:layout_height="wrap_content"
    android:inputType="numberSigned"
    android:ems="10"
    android:id="@+id/editText"
    android:layout_alignBottom="@+id/button2"
    android:layout_toLeftOf="@+id/button2"
    android:layout_toStartOf="@+id/button2" />

<ImageButton
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Button"
    android:id="@+id/button2"
    android:src="@drawable/product"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:background="@null"
    android:layout_marginBottom="10dp"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="20dp"
    android:layout_marginRight="5dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Q.TA"
    android:textColor="#083CBF"
    android:id="@+id/textView2"
    android:layout_alignParentTop="true"
    android:layout_alignLeft="@+id/editText"
    android:layout_alignStart="@+id/editText"
    android:layout_marginTop="10dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="PREZZO"
    android:textColor="#083CBF"
    android:id="@+id/textView3"
    android:layout_alignTop="@+id/textView2"
    android:layout_toLeftOf="@+id/textView2"
    android:layout_toStartOf="@+id/textView2"
    android:layout_marginRight="10dp" />

<EditText
    android:layout_width="50dp"
    android:layout_height="wrap_content"
    android:inputType="number"
    android:ems="10"
    android:id="@+id/editText2"
    android:layout_alignTop="@+id/editText"
    android:layout_alignLeft="@+id/textView3"
    android:layout_alignStart="@+id/textView3" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="COLLI"
    android:textColor="#083CBF"
    android:id="@+id/textView4"
    android:layout_alignTop="@+id/textView3"
    android:layout_toLeftOf="@+id/textView3"
    android:layout_toStartOf="@+id/textView3"
    android:layout_marginRight="20dp" />

<EditText
    android:layout_width="50dp"
    android:layout_height="wrap_content"
    android:inputType="numberSigned"
    android:ems="10"
    android:id="@+id/editText3"
    android:layout_alignTop="@+id/editText2"
    android:layout_alignLeft="@+id/textView4"
    android:layout_alignStart="@+id/textView4" />

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/textView"
    android:layout_toStartOf="@+id/textView4"
    android:id="@+id/ded"
    android:layout_toLeftOf="@+id/textView4"
    android:layout_marginRight="10dp">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:singleLine="false"
        android:id="@+id/textView"
        android:layout_below="@+id/textView4"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_gravity="center" />
</FrameLayout>

问题: 当我尝试单击imagebutton 时,它不显示 Log.d。看起来 OnClickListener 未运行。我试过了:setText("xy"); 但这也不起作用。

问题出在列表视图中吗? 我不能使用 single_row 的元素。我的应用程序不会崩溃。请帮忙!谢谢

更新:

listView.setAdapter(PROD);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
            ImageButton add_cart = (ImageButton) view.findViewById(R.id.button2);

            add_cart.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Log.d("asd", "asd");
                    Toast.makeText(getActivity(), "hi",
                            Toast.LENGTH_LONG).show();
                }
            });
        }
    });

这对我不起作用...

【问题讨论】:

    标签: java android xml android-layout listview


    【解决方案1】:

    你做错了。

    ImageButton add_cart = (ImageButton)v.findViewById(R.id.button2);
    

    您的图像按钮button2 位于list_single.xml 中,您正尝试在使用product.xml 膨胀的视图中找到它。在为 ListView 设置适配器之前也是如此。因此,在您获得对 ImageButton 的引用时,ListView 会呈现视图。这是您理想情况下应该做的事情

    listView.setAdapter(PROD);
    listView.setOnItemClickListener(new OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
        ImageButton add_cart = (ImageButton)view.findViewById(R.id.button2);
         //more logic
      }
    }); 
    

    【讨论】:

    • 嗨,这对我不起作用..我已经更新了第一篇文章..当我点击 add_cart 按钮时..在日志中有 D/ViewRootImpl:ViewPostImeInputStage ACTION_DOWN
    猜你喜欢
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    相关资源
    最近更新 更多