Я использую firebase и передавая значения в ListViewПолучитьЗначение сеттер не сохраняет значение
передать значение в ListView Я использую следующие
requestList request = requestSnapshot.getValue(requestList.class);
я также необходимо сохранить ключ для запись, но она не включена в вызов getValue.
я решил написать свой собственный сеттер для ключа и добавить его к классу requestList
я ставлю ключ вручную, как этот
request.setrequestKey(requestSnapshot.getKey());
, когда я напечатать значение запроса в журнал непосредственно после добавления их я получить правильные значения
Log.i("Chat", request.getRequestTitle()+": "+request.getRequestDescription()+" "+request.getrequestKey());
возвращает эту
RequestTitle: RequestDescription -KK4yufLTSScKHzvZtM4
я тогда хотел использовать request.getrequestkey в пределах onclicklistener как этот
messagesView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
requestList o = (requestList) messagesView.getItemAtPosition(position);
String requestKey = o.getrequestKey();
Toast.makeText(getActivity(),requestKey,Toast.LENGTH_SHORT).show();
}
});
однако requestKey равна нулю, но requestTitle и requestDescription присутствует и правильно
я не могу понять, почему класс Isnt сохраняя значение
кто может помочь, пожалуйста,
вот мой requestList класс
public class requestList {
String RequestTitle;
String RequestDescription;
String requestKey;
//DataSnapshot requestSnapshot;
public requestList() {
}
public requestList(String RequestTitle, String RequestDescription) {
this.RequestTitle = RequestTitle;
this.RequestDescription = RequestDescription;
//this.key = key;
//this.requestSnapshot = requestSnapshot;
}
public String getRequestTitle() {
return RequestTitle;
}
public String getrequestKey() {
return requestKey;
}
public String getRequestDescription() {
return RequestDescription;
}
public void setrequestKey(String requestKey) {
this.requestKey = requestKey;
}
}
я теперь включая полный класс согласно комментарий просит
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
myView = inflater.inflate(R.layout.activity_request, container, false);
final ListView messagesView = (ListView) myView.findViewById(listView);
test mApp = (test) getActivity().getApplication();
//test mApp = ((getView())getApplicationContext());
String UID = mApp.getUID();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("users/" + UID + "/Requests");
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot requestSnapshot: snapshot.getChildren()) {
//requestList request = requestSnapshot.getValue(requestList.class);
requestList request = requestSnapshot.getValue(requestList.class);
request.setRequestKey(requestSnapshot.getKey());
Log.i("Chat", request.getRequestTitle()+": "+request.getRequestDescription()+" "+request.getRequestKey());
}
}
@Override
public void onCancelled(DatabaseError firebaseError) {
Log.e("Chat", "The read failed: " + firebaseError.getMessage());
}
});
ListAdapter mAdapter = new FirebaseListAdapter<requestList>(getActivity(), requestList.class, android.R.layout.two_line_list_item, ref) {
@Override
protected void populateView(View view, requestList requestListItem, int position) {
((TextView)view.findViewById(android.R.id.text1)).setText(requestListItem.getRequestTitle());
((TextView)view.findViewById(android.R.id.text2)).setText(requestListItem.getRequestDescription());
}
};
messagesView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
requestList o = (requestList) messagesView.getItemAtPosition(position);
String requestKey = o.getRequestKey();
Toast.makeText(getActivity(),requestKey,Toast.LENGTH_SHORT).show();
}
});
messagesView.setAdapter(mAdapter);
return myView;
}
}
Я сейчас в том числе базы данных значений
{
"AccountID" : "ABC123",
"Created" : "today",
"Name" : "value",
"Requests" : {
"-KK4yufLTSScKHzvZtM4" : {
"RequestDescription" : "Request Description 3",
"RequestItems" : {
"-KK4yv8qnh7YHe7WuJ8B" : {
"Description" : "Item Descriptiopn",
"Title" : "Item Title"
},
"-KK4yv8rPsnJr824rAON" : {
"Description" : "Item Descriptiopn",
"Title" : "Item Title"
},
"-KK4yv8s3ivK7Mfx166H" : {
"Description" : "Item Descriptiopn",
"Title" : "Item Title"
},
"-KK4yv8tKoM2sV1gyOkz" : {
"Description" : "Item Descriptiopn",
"Title" : "Item Title"
}
},
"RequestTitle" : "value"
}
}
}
Пожалуйста, покажите нам код для класса 'requestList'. – ishmaelMakitla
@ishmaelMakitla Я обновил выше – PowerMan2015
Получил это. Итак, вы говорите, что если вы выполняете 'o.getrequestKey()' и возвращает 'o.getRequestTitle()' что-нибудь? - Если вы не уверены, вы можете изменить 'o.getrequestKey()' на 'o.getRequestTitle()' и сделать «Toast» значения. – ishmaelMakitla