Я хочу, чтобы содержимое edittext отображалось в recyclerview, но оно не работает, это адаптер
package c.androidchatapp.recyclerview.Adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import c.androidchatapp.recyclerview.Model.Book;
import c.androidchatapp.recyclerview.R;
import java.util.ArrayList;
import java.util.List;
public class BookAdapter extends
RecyclerView.Adapter<BookAdapter.BookViewHolder>{
private LayoutInflater layoutInflater;
private EditText edittext1;
private Button button1;
public static ArrayList<Book> bookList;
public BookAdapter(Context context, String[] mDataset) {
layoutInflater = LayoutInflater.from(context);
bookList = new ArrayList<Book>(mDataset.length);
}
@Override
public BookViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.book_list_row, parent, false);
return new BookViewHolder(itemView);
}
@Override
public void onBindViewHolder(BookViewHolder holder, int position) {
holder. editText.setText(bookList.get(position).getEditTextValue());
Log.d("print","yes");
}
@Override
public int getItemCount() {
return bookList.size();
}
public class BookViewHolder extends RecyclerView.ViewHolder {
protected EditText editText;
public BookViewHolder(View itemView) {
super(itemView);
editText = (EditText) itemView.findViewById(R.id.edittext1);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
bookList.get(getAdapterPosition()).setEditTextValue(editText.getText().toString());
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
} }
и вот моя основная деятельность, которую я использую, чтобы получить код
package c.androidchatapp.recyclerview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.Button;
import android.widget.TextView;
import c.androidchatapp.recyclerview.Adapter.BookAdapter;
import c.androidchatapp.recyclerview.Model.Book;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private Button button1;
public ArrayList<Book> bookList;
private RecyclerView recyclerView;
private BookAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
button1 = (Button) findViewById(R.id.button1);
final TextView title = (TextView) findViewById(R.id.title);
bookList = populateList();
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
// recyclerView.addItemDecoration(new ItemDividerDecoration(this, LinearLayoutManager.VERTICAL));
recyclerView.setAdapter(mAdapter);
initBookData();
}
private ArrayList<Book> populateList() {
ArrayList<Book> list = new ArrayList<>();
for(int i = 0; i < 8; i++){
Book editModel = new Book();
editModel.setEditTextValue(String.valueOf(i));
list.add(editModel);
}
return list;
}
private void initBookData() {
}
}
Я хочу, чтобы контент отображался при нажатии кнопки, но он не работает. Я пробовал другой метод, но все то же самое. вы можете сказать мне, где моя ошибка, и дать мне правильный ответ, или отредактировать код, который я публикую, и отправить мне правильный код для легкого исправления.
Вам необходимо инициализировать ваш адаптер, прежде чем устанавливать его для своего recyclerview.
Что-то типа
BookAdapter mAdapter = new BookAdapter(this, bookList);
перед этой строкой
recyclerView.setAdapter(mAdapter);
Кроме того, вам необходимо изменить реализацию адаптера, чтобы получить ArrayList<Book> вместо String[] в качестве второго аргумента.
@OdejinmiTolulopeAbraham можете ли вы обновить или предоставить свой текущий код?
package c.androidchatapp.recyclerview.Adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import c.androidchatapp.recyclerview.Model.Book;
import c.androidchatapp.recyclerview.R;
import java.util.ArrayList;
import java.util.List;
public class BookAdapter extends RecyclerView.Adapter<BookAdapter.BookViewHolder>{
private LayoutInflater layoutInflater;
private EditText edittext1;
private Button button1;
public static ArrayList<Book> bookList;
public BookAdapter(Context context, ArrayList<Book> mDataset) {
layoutInflater = LayoutInflater.from(context);
bookList = new ArrayList<Book>(mDataset);
}
@Override
public BookViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.book_list_row, parent, false);
return new BookViewHolder(itemView);
}
@Override
public void onBindViewHolder(BookViewHolder holder, int position) {
holder. editText.setText(bookList.get(position).getEditTextValue());
Log.d("print","yes");
}
@Override
public int getItemCount() {
return bookList.size();
}
public class BookViewHolder extends RecyclerView.ViewHolder {
protected EditText editText;
public BookViewHolder(View itemView) {
super(itemView);
editText = (EditText) itemView.findViewById(R.id.edittext1);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
bookList.get(getAdapterPosition()).setEditTextValue(editText.getText().toString());
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
} }
это мой новый код адаптера, и это также новый код основной активности
package c.androidchatapp.recyclerview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.Button;
import android.widget.TextView;
import c.androidchatapp.recyclerview.Adapter.BookAdapter;
import c.androidchatapp.recyclerview.Model.Book;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private Button button1;
public ArrayList<Book> bookList;
private RecyclerView recyclerView;
private BookAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
button1 = (Button) findViewById(R.id.button1);
final TextView title = (TextView) findViewById(R.id.title);
bookList = populateList();
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
// recyclerView.addItemDecoration(new ItemDividerDecoration(this, LinearLayoutManager.VERTICAL));
BookAdapter mAdapter = new BookAdapter(this, bookList);
recyclerView.setAdapter(mAdapter);
initBookData();
}
private ArrayList<Book> populateList() {
ArrayList<Book> list = new ArrayList<>();
for(int i = 0; i < 8; i++){
Book editModel = new Book();
editModel.setEditTextValue(String.valueOf(i));
list.add(editModel);
}
return list;
}
private void initBookData() {
}
}
пожалуйста, мне нужен быстрый ответ спасибо
после того, как я сделал все, что вы меня просите, он сообщает об ошибке для меня на c.androidchatapp.recyclerview.Adapter.BookAdapter $ BookViewHo lder. <init> (BookAdap ter.java:60) на c.androidchatapp.recyclerview. Adapter.BookAdapter.onCreateVi ewHolder (BookAdapter .java: 38) в c.androidchatapp.recyclerview.Adapter.BookAdapter.onCreateVi ewHolder (BookAdapter .java: 24)