Skapandet av en recycler view i android studio.
Så jag försöker skapa en recycler view och har utgått från ett exempel av en från hemsidan jag länkade med men min fungerar inte som den ska, skulle uppskatta om någon kunde förklara varför och hur jag kan lösa det. Hoppas koden inte är för stökig.
Tack i förväg för hjälpen.Koden jag kopierade
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SimpleAdapter adapter = new SimpleAdapter(generateSimpleList()); //PROBLEM!
RecyclerView recyclerView = (RecyclerView)findViewById(R.id.simple_recyclerview);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
}
private List<SimpleViewModel> generateSimpleList() {
List<SimpleViewModel> simpleViewModelList = new ArrayList<>();
for (int i = 0; i < 100; i++) {
simpleViewModelList.add(new SimpleViewModel(String.format(Locale.US, "This is item %d", i)));
}
return simpleViewModelList;
}
}
import androidx.annotation.NonNull;
public class SimpleViewModel {
private String simpleText;
public SimpleViewModel(@NonNull final String simpleText){
setSimpleText(simpleText);
}
public String getSimpleText() {
return simpleText;
}
public void setSimpleText(String simpleText) {
this.simpleText = simpleText;
}
}
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class SimpleAdapter extends RecyclerView.Adapter {
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
final View view = LayoutInflater.from(parent.getContext()).inflate(viewType, parent, false);
return new SimpleViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
((SimpleViewHolder) holder).bindData(models.get(position)); //PROBLEM!
}
@Override
public int getItemCount() {
return models.size(); //PROBLEM!
}
@Override
public int getItemViewType(int position) {
return R.layout.item_simple_itemview;
}
}
import android.view.View;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
public class SimpleViewHolder extends RecyclerView.ViewHolder {
private TextView simpleTextView;
public SimpleViewHolder(final View itemView){
super(itemView);
simpleTextView = (TextView) itemView.findViewById(R.id.simple_text);
}
public void bindData(final SimpleViewModel viewModel){
simpleTextView.setText(viewModel.getSimpleText());
}
}
Main Activity xml.
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/simple_recyclerview"
android:layout_width="match_parent"
android:layout_height="473dp" />
</FrameLayout>
XML layout 2.
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/simple_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is some temp text" />
</FrameLayout>
Så jag kommer ihåg. [code][/code]