搜索框


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    android:background="#f11ce6"
    tools:context="com.example.com.activity.SousuoActivity">
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="110dp">
    <View
        android:id="@+id/v"
        android:layout_width="50dp"
        android:layout_height="1dp" />

    <EditText
        android:id="@+id/sousuo_ed"
        android:layout_width="220dp"
        android:layout_height="40dp"
        android:layout_margin="10dp"
        android:hint="   请输入搜索内容"
        android:layout_toRightOf="@id/v"
        android:background="@drawable/edittext_shape" />


    <Button
        android:id="@+id/btn_sousuo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/sousuo_ed"
        android:layout_alignParentRight="true"
        android:layout_marginTop="10dp"
        android:text="搜索" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="清除历史记录"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/btn_sousuo"
        android:id="@+id/remove"/>
</RelativeLayout>
   <RelativeLayout
       android:layout_width="match_parent"
       android:layout_marginTop="50dp"
       android:layout_height="match_parent">
    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:divider="@null"
        android:id="@+id/lv">

    </ListView>

    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="invisible"
        android:id="@+id/recyclerview">

    </android.support.v7.widget.RecyclerView>
   </RelativeLayout>
</LinearLayout>


activity

package com.example.com.activity;

import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

import com.example.com.adapter.SearchAdapter;
import com.example.com.adapter.SearchRecyAdapter;
import com.example.com.bean.DaoMaster;
import com.example.com.bean.DaoSession;
import com.example.com.bean.GreenBeans;
import com.example.com.bean.GreenBeansDao;
import com.example.com.bean.SearchBean;
import com.example.com.camera.R;
import com.example.com.presenter.MySearchPresenter;
import com.example.com.view.LInMeiHeiDataView;

import java.util.ArrayList;
import java.util.List;

public class SousuoActivity extends AppCompatActivity implements LInMeiHeiDataView<SearchBean>,SearchRecyAdapter.onItemClick{


    private EditText sousuo_ed;
    private Button btn_sousuo;
    private ListView lv;
    private MySearchPresenter mySearchPresenter;
    private List<SearchBean.RetBean.ListBean> list;
    List<GreenBeans> greenBeans;
    private SearchAdapter searchAdapter;
    private GreenBeansDao greenBeansDao;
    private Button remove;
    private SearchRecyAdapter searchRecyAdapter;
    private RecyclerView recyclerview;


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


        sousuo_ed = findViewById(R.id.sousuo_ed);
        btn_sousuo = findViewById(R.id.btn_sousuo);
        lv = findViewById(R.id.lv);
        remove = findViewById(R.id.remove);
        recyclerview = findViewById(R.id.recyclerview);

        list = new ArrayList<>();
        greenBeans = new ArrayList<>();


        mySearchPresenter = new MySearchPresenter(this);

        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this, "sport-db", null);
        SQLiteDatabase writableDatabase = devOpenHelper.getWritableDatabase();

        // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
        DaoMaster daoMaster = new DaoMaster(writableDatabase);
        DaoSession daoSession = daoMaster.newSession();
        greenBeansDao = daoSession.getGreenBeansDao();

        toList();

        remove.setOnClickListener(new View.OnClickListener() {
            @Override
                public void onClick(View v) {
                    greenBeansDao.deleteAll();

                    toList();
            }
        });

        btn_sousuo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String s = sousuo_ed.getText().toString();
                greenBeansDao.insertOrReplace(new GreenBeans(null,s));
                mySearchPresenter.toGet(s);


            }
        });

    }

    //电影数据
    void getList() {

        StaggeredGridLayoutManager manger=new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL);
        recyclerview.setLayoutManager(manger);
        recyclerview.setNestedScrollingEnabled(false);

        if (searchRecyAdapter == null) {
            searchRecyAdapter = new SearchRecyAdapter(list, this);
            recyclerview.setAdapter(searchRecyAdapter);
        } else {
            searchRecyAdapter.notifyDataSetChanged();
        }

        searchRecyAdapter.setClick(this);
    }

    //数据库
    void toList(){
        greenBeans.clear();
        greenBeans.addAll(greenBeansDao.loadAll());
        getAdapter();
    }

    void getAdapter(){
        if(searchAdapter == null){
            searchAdapter = new SearchAdapter(greenBeans, this);
            lv.setAdapter(searchAdapter);
        }else {
            searchAdapter.notifyDataSetChanged();
        }


    }

    @Override
    public void onSuccess(SearchBean searchBean) {
        list.clear();
        list.addAll(searchBean.getRet().getList());

        lv.setVisibility(View.INVISIBLE);
        recyclerview.setVisibility(View.VISIBLE);
        getList();


    }


    @Override
    public void itemClick(int position) {

        String dataId = list.get(position).getDataId();

        Intent intent = new Intent(SousuoActivity.this, XiangqingActivity.class);

        intent.putExtra("data",dataId);

        startActivity(intent);
    }
}


linmeihuidataview

package com.example.com.view;

/**
 * Created by linmeihui on 2018/5/19.
 */

public interface LInMeiHeiDataView<T> {

    void onSuccess(T t);
}


adapter

package com.example.com.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.com.activity.SousuoActivity;
import com.example.com.bean.GreenBeans;
import com.example.com.bean.SearchBean;
import com.example.com.camera.R;

import java.util.List;

/**
 * Created by linmeihui on 2018/5/25.
 */

public class SearchRecyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{

    List<SearchBean.RetBean.ListBean> greenBeans;
    Context context;
    onItemClick click;
    public SearchRecyAdapter(List<SearchBean.RetBean.ListBean> greenBeans, Context context) {

        this.context=context;
        this.greenBeans=greenBeans;


    }

    public void setClick(onItemClick click){

        this.click=click;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View view = View.inflate(context,R.layout.fra2_recy_item,null);

        ViewHolder viewHolder=new ViewHolder(view);

        return viewHolder;

    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {

        ViewHolder viewHolder= (ViewHolder) holder;

        viewHolder.special_tv.setText(greenBeans.get(position).getTitle());
        Glide.with(context).load(greenBeans.get(position).getPic()).into(viewHolder.img);

        viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                click.itemClick(position);
            }
        });


    }

    @Override
    public int getItemCount() {
        return greenBeans.size();
    }

    class ViewHolder extends RecyclerView.ViewHolder{

        private final ImageView img;
        private final TextView special_tv;

        public ViewHolder(View itemView) {
            super(itemView);

            special_tv = itemView.findViewById(R.id.special_tv);
            img = itemView.findViewById(R.id.img);

        }
    }

    public interface onItemClick{
        void itemClick(int position);
    }

}


adapter布局

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

<ImageView
    android:layout_width="220dp"
    android:layout_height="120dp"
    android:scaleType="center"
    android:layout_margin="10dp"
    android:id="@+id/img"/>

    <TextView
        android:id="@+id/special_tv"
        android:layout_width="220dp"
        android:layout_height="20dp"
        android:layout_marginLeft="10dp"
        android:layout_alignBottom="@+id/img"
        android:background="@drawable/textview_shape"
        android:gravity="center_horizontal"
        android:textColor="#fff" />

</RelativeLayout>


<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <gradient
        android:angle="270"
        android:centerColor="#20000000"
        android:endColor="#20000000"
        android:startColor="#20000000" />

</shape>


mysearchpresenter

package com.example.com.presenter;

import com.example.com.bean.SearchBean;
import com.example.com.model.MySearchModel;
import com.example.com.view.LInMeiHeiDataView;

import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.subscribers.DefaultSubscriber;

/**
 * Created by linmeihui on 2018/5/25.
 */

public class MySearchPresenter implements DataPresenter<SearchBean> {

    LInMeiHeiDataView lInMeiHeiDataView;
    private final MySearchModel mySearchModel;


    public MySearchPresenter(LInMeiHeiDataView lInMeiHeiDataView){

        this.lInMeiHeiDataView=lInMeiHeiDataView;
        mySearchModel = new MySearchModel();


    }

    @Override
    public void success(Flowable<SearchBean> t) {

        t.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new DefaultSubscriber<SearchBean>() {
                    @Override
                    public void onNext(SearchBean searchBean) {
                        lInMeiHeiDataView.onSuccess(searchBean);
                    }

                    @Override
                    public void onError(Throwable t) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }

    public void toGet(String keyword){
        mySearchModel.getSearch(keyword,this);
    }

}

猜你喜欢

转载自blog.csdn.net/ch5211314/article/details/80737675