Я сейчас работаю над персональным адаптером.У меня есть несколько кнопок в каждой из них.Один для удаления, один для редактирования и один для добавления в общий преф.list.
Однако я не знаю, как получить идентификатор или конкретное свойство из элемента, такого как его идентификатор.
Другими словами, я пытаюсь получить идентификатор (свойствоот моего объекта), чтобы отобразить, когда я нажму одну из кнопок, позже я реализую эту функцию.Тем не менее, я не очень понимаю, где взять элементы и что каждый @Override
делает в адаптере, а также, где объявить функцию onClick
?
Вот мой адаптер, пока (Toastare для тестовых целей):
package a.bogin.revmidterm.Adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.util.List;
import a.bogin.revmidterm.Models.StringInfos;
import a.bogin.revmidterm.R;
public class StringsAdapter extends RecyclerView.Adapter<StringsAdapter.ViewHolder> {
private List<StringInfos> allStrings;
public StringsAdapter(List<StringInfos> lst){
this.allStrings = lst;
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView string1;
TextView string2;
TextView string3;
Button delB;
Button editB;
Button addPrefB;
public ViewHolder(final View itemView) {
super(itemView);
string1 = itemView.findViewById(R.id.forS1);
string2 = itemView.findViewById(R.id.forS2);
string3 = itemView.findViewById(R.id.forS3);
delB = itemView.findViewById(R.id.delBtn);
delB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
editB = itemView.findViewById(R.id.editbtn);
editB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(itemView.getContext(), "TEST", Toast.LENGTH_SHORT).show();
}
});
addPrefB = itemView.findViewById(R.id.pref);
addPrefB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(itemView.getContext(), " C MON NOM", Toast.LENGTH_SHORT).show();
}
});
}
}
@Override
public void onBindViewHolder(final StringsAdapter.ViewHolder vh, final int position) {
StringInfos str = allStrings.get(position);
vh.string1.setText(str.getString1());
vh.string2.setText(str.getString2());
vh.string3.setText(str.getString3());
}
@Override
public int getItemCount() {
return allStrings.size();
}
@Override
public StringsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Context ctx = parent.getContext();
LayoutInflater inf = LayoutInflater.from(ctx);
View createdViewForAdapter = inf.inflate(R.layout.string_adapter_infos, parent, false);
ViewHolder vh = new ViewHolder(createdViewForAdapter);
vh.editB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(), "TEEEEST", Toast.LENGTH_SHORT).show();
}
});
return vh;
}
}
Вот мой класс объекта:
package a.bogin.revmidterm.Models;
public class StringInfos {
private int id;
private String string1;
private String string2;
private String string3;
public StringInfos(String string1, String string2, String string3) {
this.string1 = string1;
this.string2 = string2;
this.string3 = string3;
}
public String getString1() {
return string1;
}
public void setString1(String string1) {
this.string1 = string1;
}
public String getString2() {
return string2;
}
public void setString2(String string2) {
this.string2 = string2;
}
public String getString3() {
return string3;
}
public void setString3(String string3) {
this.string3 = string3;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
Кроме того, вот мой MainActivity:
package a.bogin.revmidterm;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import java.util.ArrayList;
import a.bogin.revmidterm.Adapter.StringsAdapter;
import a.bogin.revmidterm.DB.DBManager;
import a.bogin.revmidterm.Models.StringInfos;
public class MainActivity extends AppCompatActivity {
ArrayList<StringInfos> listOfAll;
StringsAdapter strAdapter;
RecyclerView.LayoutManager mLayoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLayoutManager = new LinearLayoutManager(this);
.setLayoutManager(mLayoutManager);
RecyclerView myOwnRc = findViewById(R.id.rc);
myOwnRc.addItemDecoration(new DividerItemDecoration(getApplicationContext(), DividerItemDecoration.VERTICAL));
mLayoutManager = new LinearLayoutManager(this);
myOwnRc.setLayoutManager(mLayoutManager);
listOfAll = DBManager.getAllItems();
strAdapter = new StringsAdapter(listOfAll);
myOwnRc.setAdapter(strAdapter);
myOwnRc.setLayoutManager(new LinearLayoutManager(this));
myOwnRc.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View v, int pos, long id){
}
});
}
public void addStuff(View v){
Intent addNew = new Intent(this, AddItem.class);
startActivity(addNew);
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inf = getMenuInflater();
inf.inflate(R.menu.itemsstuff, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()){
case R.id.ea:
deleteAll();
return true;
case R.id.pref:
seePrefs();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void seePrefs(){
}
public void deleteAll(){
listOfAll.clear();
finish();
startActivity(getIntent());
}
}
Не стесняйтесьпредложите мне ссылки, чтобы узнать, с чего начать, или попросите любую спецификацию.
Спасибо за ваше время.
Проблема с setOnItemClickListner:
myOwnRc.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View v, int pos, long id){
}
});
после myOwnRc,однако он красный, второй принят.