如何在片段类中创建Intent

时间:2017-08-22 16:53:31

标签: java android android-fragments android-intent

我已经设法使用循环视图创建了一个标签式活动,并在每个片段中创建了一个列表视图,现在我有了我需要的列表,可以使片段中的卡片可单击并创建一个开始新活动的意图。我已经尝试了on-click方法和onListItemClick,即使我知道这不起作用。

基本上我需要为每个片段再创建一个列表层,这些列表将导致一系列操作(网页视图,地图和信息)。

示例代码如下

ublic class LOneFragment extends Fragment {

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

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

}

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

    RecyclerView rv = (RecyclerView) rootView.findViewById(R.id.rv_recycler_view);
    rv.setHasFixedSize(true);
    MyAdapter adapter = new MyAdapter(new String[]{"League One News", "AFC Wimbledon", "Blackburn Rovers", "Blackpool", "Bradford City", "Bristol Rovers", "Bury", "Charlton Athletic", "Doncaster Rovers", "Fleetwood Town",
            "Gillingham", "Milton Keynes Dons", "Northampton Town", "Oldham Athletic", "Oxford United", "Peterborough United", "Plymouth Argyle", "Portsmouth", "Rochdale", "Rotherham United",
            "Scunthorpe United", "Shrewsbury Town", "Southend United", "Walsall", "Wigan Athletic"});
    rv.setAdapter(adapter);

    LinearLayoutManager llm = new LinearLayoutManager(getActivity());
    rv.setLayoutManager(llm);

    return rootView;
}

public void onListItemClick(ListView l, View v, int position, long id) {
    if (position == 3) {
        Intent intent = new Intent(getContext(), Bradford.class);
        startActivity(intent);
    }

我的适配器类

公共类MyAdapter扩展了RecyclerView.Adapter {

private String[] mDataset;

public static class MyViewHolder extends RecyclerView.ViewHolder{
    public CardView mCardView;
    public TextView mTextView;
    public MyViewHolder(View v){
        super(v);

        mCardView = (CardView) v.findViewById(R.id.card_view);
        mTextView = (TextView) v.findViewById(R.id.tv_text);

    }

}

public MyAdapter(String[] myDataset){
    mDataset = myDataset;
}

@Override
public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_item, parent, false);
    MyViewHolder vh = new MyViewHolder(v);
    return vh;
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position){
    holder.mTextView.setText(mDataset[position]);
}

@Override
public int getItemCount() { return mDataset.length; }

}

1 个答案:

答案 0 :(得分:0)

这对我来说很完美。

1)在viewholder类中创建方法,该方法将占据位置,从位置获取数组项并使用您喜欢的方式。

2)使用itemView实例在onBindViewHolder方法中访问它,该实例是给定位置的完整行,

public class MyAdapter extends RecyclerView.Adapter {

     private String[] mDataset;


public MyAdapter(String[] myDataset){
mDataset = myDataset;
}

 @Override
 public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_item, parent, false);
    MyViewHolder vh = new MyViewHolder(v);
    return vh;
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position){
    holder.mTextView.setText(mDataset[position]);
    holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                holder.bindCliks(groupItem);
            }
        });

@Override 
public int getItemCount() { return mDataset.length; }
}



public static class MyViewHolder extends RecyclerView.ViewHolder{
     public CardView mCardView;
     public TextView mTextView;

     public MyViewHolder(View v){
          super(v);

          mCardView = (CardView) v.findViewById(R.id.card_view);
          mTextView = (TextView) v.findViewById(R.id.tv_text);
     }


    public void bindCliks(int position) {
        Intent intent = new Intent(context, 
            OtherActivity.class);
       //use number here to get your string item and use it to other activity.
        context.startActivity(intent);
    }
}