Recycler + entry click

OnItemListner 、、


package com.dash.project_1511a.inter;



/**
 * Created by Dash on 2017/12/25.
 */
public interface OnItemListner {


    void onItemClick(int position);
    void onItemLongClick(int position);


}



Adapter、、

package com.dash.project_1511a;


import android.content.Context;
import android.graphics.Color;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;


import com.dash.project_1511a.holder.MyListHolder;
import com.dash.project_1511a.inter.OnItemListner;


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


/**
 * Created by Dash on 2017/12/25.
 */
public class MyListAdapter extends RecyclerView.Adapter<MyListHolder> {


    private List<String> list;
    private Context context;
    private List<Integer> heightList = new ArrayList<>();
    private OnItemListner onItemListner;


    public MyListAdapter(Context context, List<String> list) {
        this.context = context;
        this.list = list;


        //Create random numbers
        for (int i = 0;i<list.size();i++){
            heightList. add((int) (100+Math.random()*200));
        }
    }


    /**
     * onCreateViewHolder The method called when a viewHolder is created.... need to create a viewHolder in this method
     * @param parent
     * @ param viewType
     * @return
     */
    @Override
    public MyListHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //The view of the item
        View view = View.inflate(context,R.layout.list_item_layout,null);


        //According to the displayed item View creates viewHolder
        MyListHolder myListHolder = new MyListHolder(view);


        return myListHolder;
    }


    /**
     * onBindViewHolder.... After binding, do some assignment operations, ,,, textView sets text, imageView sets pictures, button, checkBox sets listening events
     * @param holder
     * @param position
     */
    @Override
    public void onBindViewHolder(MyListHolder holder, final int position) {




        ViewGroup.LayoutParams layoutParams = holder.textView.getLayoutParams();
        layoutParams.height = heightList.get(position);
        layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
        holder.textView.setLayoutParams(layoutParams);


        //Set random background color
        holder.textView.setBackgroundColor(Color.rgb((int) (100+ Math.random()*155),(int) (100+ Math.random()*155),(int) (100+ Math.random( )*155)));


        //Set the text
        holder.textView.setText(list.get(position));




        //Set the listener event
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //The execution of the listening event is triggered,,, instead of processing directly
                onItemListner.onItemClick(position);
            }
        });


        holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick( View view) {


                onItemListner.onItemLongClick(position);
                //Resolve the conflict between click and long press
                return true;
            }
        });
    }


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


    /**
     * Created to set the event method
     * @param onItemListner
     */
    public void setOnItemListner(OnItemListner onItemListner) {
        this.onItemListner = onItemListner;
    }

}




Main method

package com.dash.project_1511a;


import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.OrientationHelper;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;


import com.dash.project_1511a.inter.OnItemListner;


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


/**
 * 1.展示列表
 * 2.展示gridview表格
 * 3.瀑布流
 */
public class MainActivity extends AppCompatActivity {


    private RecyclerView recyclerView;
    private MyListAdapter myListAdapter;


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


        recyclerView = findViewById(R.id.recycler_view) ;


        //data
        final List<String> list = new ArrayList<>();
        for (int i = 0;i<1000;i++){
            list.add("This is entry"+i);
        }


        //Must be specified Layout manager
        recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this, OrientationHelper.HORIZONTAL,true));


        //The setting is the adapter
        myListAdapter = new MyListAdapter(MainActivity.this, list);


        recyclerView.setAdapter(myListAdapter);




        //The click event and long press event of an item need to be implemented by yourself
        myListAdapter.setOnItemListner(new OnItemListner() {
            @Override
            public void onItemClick(int position) {
                Toast.makeText(MainActivity.this,"Clicked:"+list.get(position),Toast.LENGTH_SHORT).show();
            }


            @Override
            public void onItemLongClick(int position) {
                Toast.makeText(MainActivity.this, "Long press:"+list.get(position),Toast.LENGTH_SHORT).show();


            }
        });


    }


    /**
     * Click event....listView effect is vertical by default,,, you can is horizontal
     * @param view
     */
    public void lieBiao(View view) {
        recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));
    }


    public void biaoGe(View view) {




        //recyclerView.setLayoutManager(new GridLayoutManager(MainActivity.this,3));


        recyclerView.setLayoutManager(new GridLayoutManager(this,3,OrientationHelper.HORIZONTAL,false));
    }


    /**
     * 瀑布流
     * @param view
     */
    public void waterWall(View view) {


        //竖直的瀑布流效果
        recyclerView.setLayoutManager(new StaggeredGridLayoutManager(3,OrientationHelper.VERTICAL));




    }
}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325210762&siteId=291194637