【问题标题】:Android CustomListAdapter Setting TextView from EditText OnClick in TABAndroid CustomListAdapter 在 TAB 中从 EditText OnClick 设置 TextView
【发布时间】:2017-09-17 14:38:36
【问题描述】:

在我的一个选项卡上,我有一个 Listview,当用户在 edittext 上输入文本然后按下按钮时,我想填充它。编辑文本和按钮与列表视图一起位于选项卡式布局中。

textview 和 imageview 在 customlistadapter 中设置。但是当我按下按钮时,什么也没有发生,我似乎无法弄清楚为什么。

Tab3.java

@Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        final View v = inflater.inflate(R.layout.tab3, container, false);

        final EditText notes = (EditText) v.findViewById(R.id.editText);
        listView=(ListView)v.findViewById(R.id.list);
        Button button = (Button) v.findViewById(R.id.button3);
        String note = notes.getText().toString();

        int[] cross = new int[]{R.drawable.cross};
        String [] notesofrules = new String[]{note};

        final CustomListAdapter adapter=new CustomListAdapter(this.getActivity(), notesofrules, cross);

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

        Button rulesSet = (Button)v.findViewById(R.id.button3);
        rulesSet.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v)
            {
                listView.setAdapter(adapter);
            }
        });
        return v;
        }

自定义列表适配器:

 public CustomListAdapter(Activity context, String[] notes, int[] imageCross) {
        super(context, R.layout.item);
        // TODO Auto-generated constructor stub
        this.context=context;
        this.notes = notes;
        this.imageCross = imageCross;
    }

    public View getView(final int position, View view, ViewGroup parent) {
        LayoutInflater inflater=context.getLayoutInflater();
        View rowView=inflater.inflate(R.layout.item, null,false);

        TextView ruleNotesSet = (TextView) rowView.findViewById(R.id.textView1);
        ImageView image = (ImageView) rowView.findViewById(R.id.icon);

        image.setImageResource(imageCross[position]);
        ruleNotesSet.setText(notes[position]);
        return rowView;
    }

tab3.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
   >

    <TextView android:text="@string/thirdTabTitle" android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#FF9900"
        android:id="@+id/textView"
        android:textIsSelectable="true"
        android:textSize="55px"
        android:shadowColor="#73ffffff"
        android:fontFamily="sans-serif-bold" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="100px"
        android:ems="10"
        android:padding="10dp"
        android:id="@+id/editText"
        android:background="@drawable/edittext_rounded_corners"
        android:layout_marginTop="18dp"
        android:layout_below="@+id/textView"
        android:layout_alignParentEnd="true"
        android:layout_alignParentStart="true" />
    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="@string/addnote"
        android:background="@drawable/calculate_button"
        android:textColor="#000000"
        android:fontFamily="sans-serif-bold"
        android:layout_below="@+id/editText"
        android:textSize="40px"/>

    <TextView
        android:id="@+id/notes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        android:textSize="45px"
        android:layout_below="@+id/button3"
        android:fontFamily="sans-serif-bold"
        android:layout_toRightOf="@id/autohighlight_checkbox"
       />
    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:layout_alignTop="@+id/notes" />
</RelativeLayout>


item.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="fill_parent"
        android:layout_height="fill_parent">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:weightSum="1">

                <TextView
                    android:id="@+id/textView1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="5dp"
                    android:padding="2dp"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:textColor="#4CBE99"
                    android:textSize="14dp"
                    android:text="Item"
                    android:textAllCaps="true"
                    android:textStyle="bold" />
                <ImageView
                    android:id="@+id/icon"
                    android:layout_width="60dp"
                    android:layout_height="60dp"
                    android:padding="5dp" />

            </LinearLayout>

    </LinearLayout>

【问题讨论】:

    标签: java android android-layout listview


    【解决方案1】:

    我认为您的适配器是空的。您只需要设置一次,然后在您的适配器中创建一个刷新功能,您将在您的活动的 onClick 中调用

    public void refresh(String[] notes, int[] imageCross) {
        this.notes = notes;
        this.imageCross = imageCross;
        this.notifySataSetChanged();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-30
      • 1970-01-01
      相关资源
      最近更新 更多