hiwa doski Ответов: 1

Как я могу создать пользовательский список в android fragment с помощью onclick для различных элементов в списке?


могу ли я использовать ListFragment для достижения того, что я сказал выше, или мне нужно заказ переработчик вид внутри фрагмента, я пытался поставить переработчик вид внутри фрагмента, но я не знаю как сделать onclick для утилизации вид работы с фрагментом, так что он передает данные на другой фрагмент или другой вид деятельности в случае мульти-панели пользовательского интерфейса, так что я могу использовать список фрагмент или мой единственный выход-переработчик посмотреть, если это то, как я могу сделать ее в переработчик зрения ?

моя основная активность, которая имеет фрагмент, содержащий представление recycler

public class MainActivity extends AppCompatActivity {

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

    FragmentManager fm = getSupportFragmentManager();

    Fragment fragment = fm.findFragmentById(R.id.main_fragment_container);

    if (fragment == null) {
        fragment = new FragmentRecyclerList();

        fm.beginTransaction()
                .add(R.id.main_fragment_container, fragment)
                .commit();
    }

}
}  


мой фрагмент, содержащий представление recycler

public class FragmentRecyclerList extends Fragment implements MyDialog.OnInputSelected {

private RecyclerView recyclerView;
private RecyclerViewAdapter recyclerViewAdapter;
private List<string> titles;
private FloatingActionButton fab;

public FragmentRecyclerList() {
    // 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.fragment_fragment_recycler_list, container, false);
}

void showDialog() {
    MyDialog myDialog = new MyDialog();
    myDialog.setTargetFragment(FragmentRecyclerList.this, 1);
    myDialog.show(getFragmentManager(), "MyDialog");
}

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

    recyclerView = getView().findViewById(R.id.recyclerview);
    fab = getView().findViewById(R.id.floatingActionButton);

    titles = new ArrayList<>();

    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

    recyclerViewAdapter = new RecyclerViewAdapter(getActivity(), titles);

    recyclerView.setAdapter(recyclerViewAdapter);

    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showDialog();
        }
    });


}
} 


мой переработчик вид адаптера

public class RecyclerViewAdapter extends RecyclerView.Adapter {

private Context context;
private List<string> titles;

public RecyclerViewAdapter(Context context, List<string> titles) {
    this.context = context;
    this.titles = titles;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_wallpaper
            , parent, false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    String title = titles.get(position);
    holder.tvTitle.setText(title);
}

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

public class ViewHolder extends RecyclerView.ViewHolder {

    public TextView tvTitle;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        View v = itemView;
        tvTitle = itemView.findViewById(R.id.row_title);

    } 


Что я уже пробовал:

я перепробовал много способов, но ничего не работает.

1 Ответов

Рейтинг:
0

Member 14770277

Почему вы используете `findFragmentById`, а не навигационную библиотеку Jetpack?