<?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); } }