установить намерение, OnCreate в представлении переработчика, чтобы перейти к другой конкретной операции для определенного списка (строка) - PullRequest
2 голосов
/ 20 июня 2019

Я реализовал onClick, и когда я щелкнул по каждому списку, все переходят к операции "abc", но я хочу перейти по списку со словом "dd" в действие "abcActivity" и список со словом "ss" в "defActivity ".

Я попытался добавить плюс еще один intent, но он снова показывает то же самое для всего списка :(

, пожалуйста, помогите мне, я прочитал все предложенные статьи, приведенные при написании этого, но неиз них были ответы на то, что я спросил. Пожалуйста, помогите мне.

Это основное занятие:

public class MainActivity extends AppCompatActivity implements WordAdapter.OnNoteListener {
    private RecyclerView recyclerView;
    private static final String TAG = MainActivity.class.getCanonicalName();

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

        recyclerView = findViewById(R.id.home_view);
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);

        recyclerView.setLayoutManager(layoutManager);

        List<Word> wordList = new ArrayList<>();


        wordList.add(new Word(R.drawable.ic_launcher_background, "dd"));
        wordList.add(new Word(R.drawable.ic_launcher_background, "ss"));
        wordList.add(new Word(R.drawable.ic_launcher_background, "cc"));


        WordAdapter adapter = new WordAdapter(this);
        recyclerView.setAdapter(adapter);
        adapter.addItems(wordList);
    }

    @Override
    public void onNoteClick(int position) {
        Log.d(TAG, "clicked on the position:" + position);


        Intent myIntent = new Intent(MainActivity.this, abc.class);
        myIntent.putExtra("dd", 1); 
        MainActivity.this.startActivity(myIntent);


        Intent feedbackIntent = new Intent(MainActivity.this, def.class);
        feedbackIntent.putExtra("ss", 0); 
        MainActivity.this.startActivity(feedbackIntent);

    }
}

Это код, который я добавил под созданием "abc"

Intent myIntent = getIntent();
String value = myIntent.getStringExtra("dd" );

Это код, который я добавил под созданием "def"

Intent intent = getIntent();
        String value = intent.getStringExtra("ss");

А это адаптер с именем WordAdapter

public class WordAdapter extends RecyclerView.Adapter<WordAdapter.ViewHolder> {

    private List<Word> wordList;
    private OnNoteListener mOnNoteListener;

    public WordAdapter(List<Word> wordList, OnNoteListener onNoteListener) {
        this.wordList = wordList;
        this.mOnNoteListener = onNoteListener;
    }

    public WordAdapter(OnNoteListener onNoteListener) {
        this(new ArrayList<Word>(), onNoteListener);
    }

    public void addItems(List<Word> items) {
        wordList.addAll(items);
        notifyDataSetChanged();
    }

    public void clear() {
        wordList.clear();
        notifyDataSetChanged();
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_items, viewGroup, false);
        return new ViewHolder(view, mOnNoteListener);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewholder, int position) {
        int resource = wordList.get(position).getImageResource();
        String title = wordList.get(position).getTitle();
        viewholder.setData(resource, title);
    }

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

    static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        private ImageView imageView;
        private TextView title;

        private OnNoteListener onNoteListener;

        public ViewHolder(@NonNull View itemView, OnNoteListener onNoteListener) {
            super(itemView);

            imageView = itemView.findViewById(R.id.imageView);
            title = itemView.findViewById(R.id.word);
            this.onNoteListener = onNoteListener;

            itemView.setOnClickListener(this);
        }

        private void setData(int resource, String titleText) {
            imageView.setImageResource(resource);
            title.setText(titleText);
        }

        @Override
        public void onClick(View view) {
            onNoteListener.onNoteClick(getAdapterPosition());
        }
    }

    public interface OnNoteListener {
        void onNoteClick(int position);
    }
}

Я ЗНАЮ, что я не прав :(. Яначинающий, пожалуйста, смиритесь с этим и порекомендуйте решение. введите код здесь

Ответы [ 2 ]

0 голосов
/ 23 июня 2019

Я просто пробовал разные методы от себя, и в конце концов это сработало, я новичок, и когда я прибил его, я был очень счастлив: p

Чтобы передать намерение из переработчика, нет необходимости писать какой-либо кодв том виде, в котором мы отправляем намерение.

просто напишите приведенный ниже код в onNoteLitner с помощью оператора if else:

@Override
    public void onNoteClick(int position) {
        Log.d(TAG, "clicked on the position:" + position);
        if (position == 0) {
            Intent intent = new Intent(NoteActivity.this, RajeshDai.class);
            startActivity(intent);
        }

после этого оставьте Adapter таким же, если у вас есть мой, я имею в виду, еслиу вас есть адаптер, как у меня выше вопрос.

затем реализуйте Parcelable в Word (который предоставляет изображения, текст) для адаптера, тогда он должен выглядеть следующим образом:

public class Word implements Parcelable {

    private int imageResource;
    private String title;

    public Word(int imageResource, String title) {
        this.imageResource = imageResource;
        this.title = title;
    }

    protected Word(Parcel in) {
        imageResource = in.readInt();
        title = in.readString();
    }

    public static final Creator<Word> CREATOR = new Creator<Word>() {
        @Override
        public Word createFromParcel(Parcel in) {
            return new Word(in);
        }

        @Override
        public Word[] newArray(int size) {
            return new Word[size];
        }
    };

    public int getImageResource() {
        return imageResource;
    }

    public String getTitle() {
        return title;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeInt(imageResource);
        parcel.writeString(title);
    }
}

Не стесняйтесьчтобы спросить, если у вас возникли проблемы, я сделаю все возможное, чтобы помочь вам!

0 голосов
/ 21 июня 2019

Попробуйте,

Здесь я передаю элемент recyclerview, соответствующий названию для активности.Чтобы мы могли обрабатывать MainActivity.

В вашем классе WordAdapter, вставьте этот метод ниже в ViewHolder

@Override
public void onClick(View view) {
   onNoteListener.onNoteClick(getAdapterPosition(), wordList.get(position).getTitle());
}

и измените ваш параметр interface, как показано ниже,

 public interface OnNoteListener {
        void onNoteClick(int position, String title);
    }

, за которыми следует MainActivity, из WordAdapter переданного значения устанавливается Intent для соответствующей активности, как показано ниже.

@Override
    public void onNoteClick(int position, String title) {
        Log.d(TAG, "clicked on the position:" + position);
        if(title.equalsIgnoreCase("dd"){
            Intent myIntent = new Intent(MainActivity.this, abc.class);
            myIntent.putExtra("dd", 1); 
            MainActivity.this.startActivity(myIntent);
        }
        else {
            Intent feedbackIntent = new Intent(MainActivity.this, def.class);
            feedbackIntent.putExtra("ss", 0); 
            MainActivity.this.startActivity(feedbackIntent);
        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...