在自定义列表中添加搜索框

时间:2020-02-21 08:42:37

标签: android android-studio android-layout

我想在Main活动和List data活动中添加搜索框操作,但是我在获取filter()和其他内容时遇到了麻烦,请向我建议一下。

    package com.souravapplication.fruit;

    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.ListView;
    import android.widget.SearchView;
    import android.widget.TextView;
    import android.widget.Toast;

    import java.util.Locale;

    public class MainActivity extends AppCompatActivity {

    SearchView editsearch;
    ListView listView;
    String[] fruitNames = {"Apple","Oranges","Kiwi","Passion","Banana"};
    int[]  fruitImages  = {R.drawable.apple,R.drawable.oranges,R.drawable.kiwi,R.drawable.passion,R.drawable.banana};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView = findViewById(R.id.listview);
        final CustomAdapter  customAdapter  = new CustomAdapter();
        listView.setAdapter(customAdapter);
        editsearch = findViewById(R.id.search);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(final AdapterView adapterView, View view, int i, long l) {
                Toast.makeText(getApplicationContext(),fruitNames[i],Toast.LENGTH_LONG).show();
                Intent intent = new Intent(getApplicationContext(),Listdata.class);
                intent.putExtra("name",fruitNames[i]);
                intent.putExtra("image",fruitImages[i]);
                startActivity(intent);
            }
        });
    }

    private class CustomAdapter extends BaseAdapter {
            @Override
            public int getCount() {
                return fruitImages.length;
            }

            @Override
            public Object getItem(int i) {
                return null;
            }

            @Override
            public long getItemId(int i) {
                return 0;
            }

            @Override
            public View getView(int i, View view, ViewGroup viewGroup) {
                View view1 = getLayoutInflater().inflate(R.layout.row_data, null);
                //getting view in row_data
                TextView name = view1.findViewById(R.id.fruits);
                ImageView image = view1.findViewById(R.id.images);

                name.setText(fruitNames[i]);
                image.setImageResource(fruitImages[i]);
                return view1;
            }

        }
}

我的列表数据活动类。

     package com.souravapplication.fruits;
     import android.content.Intent;
     import android.support.v7.app.AppCompatActivity;
     import android.os.Bundle;
     import android.view.MenuItem;
     import android.widget.ImageView;
     import android.widget.TextView;

     public class Listdata extends AppCompatActivity {
      TextView listdata;
       ImageView imageView;
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_listdata);
        listdata = findViewById(R.id.listdata);
        imageView = findViewById(R.id.imageView);
        Intent intent = getIntent();
        String receivedName =  intent.getStringExtra("name");
        int receivedImage = intent.getIntExtra("image",0);
        listdata.setText(receivedName);
        imageView.setImageResource(receivedImage);
        //enable back Button
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        }

             @Override
               public boolean onOptionsItemSelected(MenuItem item) {
            if (item.getItemId() == android.R.id.home) {
                onBackPressed();
            }
            return super.onOptionsItemSelected(item);
    }
    @Override
    public void onBackPressed() {
        super.onBackPressed();
    }
}

我已经用Android XML定义了SearchBox,并且可以正常工作,唯一的问题是在搜索框中添加了操作。

我的activity_main.xml文件

 <?xml version="1.0" encoding="utf-8"?>
 <android.support.constraint.ConstraintLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context=".MainActivity">


  <SearchView
      android:id="@+id/search"
      android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:iconifiedByDefault="false"
   app:layout_constraintBottom_toBottomOf="parent"
   app:layout_constraintLeft_toLeftOf="parent"
   app:layout_constraintRight_toRightOf="parent"
   app:layout_constraintStart_toStartOf="parent">

    </SearchView>

   <ListView
   android:id="@+id/listview"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_marginEnd="16dp"
   android:layout_marginRight="16dp"
   app:layout_constraintEnd_toEndOf="parent"
   tools:ignore="MissingConstraints"
   tools:layout_editor_absoluteY="-699dp">
   </ListView>
   </android.support.constraint.ConstraintLayout>

我的row_data.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">

<RelativeLayout
    android:id="@+id/listviewdata"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    >

    <TextView
        android:id="@+id/fruits"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginEnd="44dp"
        android:layout_marginRight="44dp"
        android:layout_toStartOf="@+id/images"
        android:layout_toLeftOf="@+id/images"
        android:text="Apple"
        android:textColor="#000"
        android:textSize="35sp"
        />


    <ImageView
        android:id="@+id/images"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginEnd="27dp"
        android:layout_marginRight="27dp"
        android:src="@drawable/apple"/>



</RelativeLayout>

0 个答案:

没有答案