recycleView页面的点击跳转

690 阅读3分钟

RecyclerView是Android中对ListView的升级,用来在有限的手机屏幕上展示大量的数据。我们还可以为每个item,甚至每个item内的子控件设置监听器,以实现点击事件。

myViewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(mContext, NewsActivity.class); mContext.startActivity(intent); } });

package com.example.mywechat;

import org.junit.Test;

import static org.junit.Assert.*;

/**

  • Example local unit test, which will execute on the development machine (host).
  • @see Testing documentation */ public class ExampleUnitTest { @Test public void addition_isCorrect() { assertEquals(4, 2 + 2); } }

package com.example.mywechat;

import android.os.Bundle;

import android.app.Fragment;

import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView;

import androidx.annotation.Nullable; import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;

/**

  • A simple {@link Fragment} subclass. */ public class weixinFragment extends Fragment { private final static String PRODUCT="product"; private final static String PRICE="price"; private final static String CONFIGURATION="configuration";

    public weixinFragment() { // Required empty public constructor }

    private View view;//定义view用来设置fragment的layout public RecyclerView mCollectRecyclerView;//定义RecyclerView List<Map<String,Object>> items=new ArrayList<Map<String,Object>>();

    //自定义recyclerveiw的适配器 MyRecyclerAdapter myRecyclerAdapter;

    @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { //获取fragment的layout view = inflater.inflate(R.layout.tab01, container, false); //对recycleview进行配置 initRecyclerView(); //模拟数据 initData(); return view; }

    /**

    • TODO 模拟数据 */ private void initData() { String[] products={"小米Note","华为荣耀7","魅族MX5","锤子T1"}; String[] prices={"1999","1999","1999","2480"}; String[] configurations={"高通骁龙 801,3GB RAM,16GB ROM","麒麟 935,3GB RAM,16GB ROM","联发科(MTK)Helio X10 Turbo,3GB RAM,32GB ROM","高通骁龙 801,2GB RAM,32GB ROM"};

      for(int i=0;i<products.length;i++) { Map<String,Object> item=new HashMap<String,Object>(); item.put(PRODUCT, products[i]); item.put(PRICE, prices[i]); item.put(CONFIGURATION, configurations[i]); items.add(item); } }

    /**

    • TODO 对recycleview进行配置 */

    private void initRecyclerView() { //获取RecyclerView mCollectRecyclerView=(RecyclerView)view.findViewById(R.id.rv_list); //创建adapter myRecyclerAdapter = new MyRecyclerAdapter(getActivity(), items); //给RecyclerView设置adapter mCollectRecyclerView.setAdapter(myRecyclerAdapter); //设置layoutManager,可以设置显示效果,是线性布局、grid布局,还是瀑布流布局 //参数是:上下文、列表方向(横向还是纵向)、是否倒叙 mCollectRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false)); //设置item的分割线 mCollectRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(),DividerItemDecoration.VERTICAL)); //RecyclerView中没有item的监听事件,需要自己在适配器中写一个监听事件的接口。参数根据自定义

    }

}

package com.example.mywechat;

import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup;

import android.app.Fragment;

/**

  • A simple {@link Fragment} subclass. */ public class settingsFragment extends Fragment {

    public settingsFragment() { // Required empty public constructor }

    @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.tab04, container, false); }

}

package com.example.mywechat;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

public class NewsActivity extends AppCompatActivity {

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

}

package com.example.mywechat;

import android.app.Activity; import android.content.Context; import android.content.Intent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView;

import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView;

import java.util.List; import java.util.Map;

public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.MyViewHolder> {

private final static String PRODUCT="product";
private final static String PRICE="price";
private final static String CONFIGURATION="configuration";
private List<Map<String,Object>> items;
private Context mContext;

public MyRecyclerAdapter(Activity context, List<Map<String,Object>> items){
    this. mContext=context;
    this. items=items;
}

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

@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    MyViewHolder myViewHolder=new MyViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item,parent,false));
    return myViewHolder;
}

@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
    Map<String,Object> item=items.get(position);
    MyViewHolder myViewHolder=holder;
    myViewHolder.tv1.setText((String)item.get(PRODUCT));
    myViewHolder.tv2.setText((String)item.get(PRICE));
    myViewHolder.tv3.setText((String)item.get(CONFIGURATION));
    myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent=new Intent(mContext, NewsActivity.class);
            mContext.startActivity(intent);
        }
    });
}

class MyViewHolder extends RecyclerView.ViewHolder {

    TextView tv1;
    TextView tv2;
    TextView tv3;
    public MyViewHolder(View view) {
        super(view);
        tv1=(TextView) view.findViewById(R.id.txtProduct);
        tv2=(TextView) view.findViewById(R.id.txtPrice);
        tv3=(TextView) view.findViewById(R.id.txtConfiguration);
    }

}

}

package com.example.mywechat;

import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView;

import android.app.Fragment;

import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; import android.view.View; import android.view.Window; import android.widget.ImageButton; import android.widget.LinearLayout;

import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private LinearLayout mTabWeixin;
private LinearLayout mTabFrd;
private LinearLayout mTabContact;
private LinearLayout mTabSettings;

private ImageButton mImgWeixin;
private ImageButton mImgFrd;
private ImageButton mImgContact;
private ImageButton mImgSettings;

private Fragment mTab01= new weixinFragment();
private Fragment mTab02= new frdFragment();
private Fragment mTab03= new contactFragment();
private Fragment mTab04= new settingsFragment();

private FragmentManager fm;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_main);
    initView();
    initFragment();
    initevent();
    selectfragment(0);
}
private void initFragment(){
    fm=getFragmentManager();
    FragmentTransaction transaction = fm.beginTransaction();
    transaction.add(R.id.id_content,mTab01);
    transaction.add(R.id.id_content,mTab02);
    transaction.add(R.id.id_content,mTab03);
    transaction.add(R.id.id_content,mTab04);
    transaction.commit();
}
private void initView(){
    mTabWeixin=(LinearLayout)findViewById(R.id.id_tab_weixin);
    mTabFrd=(LinearLayout)findViewById(R.id.id_tab_frd);
    mTabContact=(LinearLayout)findViewById(R.id.id_tab_contact);
    mTabSettings=(LinearLayout)findViewById(R.id.id_tab_settings);

    mImgWeixin=(ImageButton)findViewById(R.id.id_tab_weixin_img);
    mImgFrd=(ImageButton)findViewById(R.id.id_tab_frd_img);
    mImgContact=(ImageButton)findViewById(R.id.id_tab_contact_img);
    mImgSettings=(ImageButton)findViewById(R.id.id_tab_settings_img);
}
private  void initevent(){
    mTabWeixin.setOnClickListener(this);
    mTabFrd.setOnClickListener(this);
    mTabContact.setOnClickListener(this);
    mTabSettings.setOnClickListener(this);
}
private void hidefragment(FragmentTransaction transaction){
    transaction.hide(mTab01);
    transaction.hide(mTab02);
    transaction.hide(mTab03);
    transaction.hide(mTab04);

}
private void selectfragment(int i){
    FragmentTransaction transaction=fm.beginTransaction();
    hidefragment(transaction);
    switch (i){
        case 0:
            transaction.show(mTab01);
            resetImgs();

            mImgWeixin.setImageResource(R.drawable.tab_weixin_pressed);
            break;
        case 1:
            transaction.show(mTab02);


            mImgFrd.setImageResource(R.drawable.tab_find_frd_pressed);
            break;
        case 2:
            transaction.show(mTab03);


            mImgContact.setImageResource(R.drawable.tab_address_pressed);
            break;
        case 3:
            transaction.show(mTab04);

            mImgSettings.setImageResource(R.drawable.tab_settings_pressed);
            break;
        default:
            break;
    }
    transaction.commit();
}

@Override
public void onClick(View v) {
    resetImgs();
    switch (v.getId()){
        case R.id.id_tab_weixin:
            selectfragment(0);
            break;
        case R.id.id_tab_frd:
            selectfragment(1);
            break;
        case R.id.id_tab_contact:
            selectfragment(2);
            break;
        case R.id.id_tab_settings:
            selectfragment(3);
            break;
        default:
            break;
    }

}
public void resetImgs(){
    mImgWeixin.setImageResource(R.drawable.tab_weixin_normal);
    mImgFrd.setImageResource(R.drawable.tab_find_frd_normal);
    mImgContact.setImageResource(R.drawable.tab_address_normal);
    mImgSettings.setImageResource(R.drawable.tab_settings_normal);
}

}

`[A{9U~OGY3KXHS[QUCNP.png

GLX%@R(BF~2F5655~AVEG.png