私は、HistoryAdapterクラスのHistoryFragmentクラスからメソッドを実行したいと考えています。私はこのメソッドを実行したい場所をコメントしました。私がしようとしていることを別の方法で見ることができるなら、私はすべての耳です。私は、アイテムリストが空である(データが表示されていない)ときに、テキストビューに「履歴なし」を表示させたいと思います。あなたの意見を聞くのが大好きです!ここで おかげアダプタクラス内のフラグメントクラスからメソッドを実行
は、カスタムリストビューを作成するために私のアダプタクラスである:ここで
package uk.co.rascagneres.clocking_app;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.TextView;
import java.util.ArrayList;
/**
* Created by Jacques on 08/08/2016.
*/
public class HistoryAdapter extends BaseAdapter implements ListAdapter{
private ArrayList<String> list = new ArrayList<String>();
private Context context;
public ArrayList<String> idArray = new ArrayList<String>();
DatabaseHandler db;
public HistoryAdapter (ArrayList<String> list, Context context, ArrayList<String> idArray, DatabaseHandler db){
this.list = list;
this.context = context;
this.idArray = idArray;
this.db = db;
}
@Override
public int getCount(){
return list.size();
}
@Override
public Object getItem(int pos){
return list.get(pos);
}
@Override
public long getItemId(int pos){
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent){
View view = convertView;
if(view == null){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.history_list, null);
}
final View innerView = view;
TextView listItemText = (TextView)view.findViewById(R.id.list_item_string);
listItemText.setText(list.get(position));
Button deleteBtn = (Button)view.findViewById(R.id.delete_btn);
deleteBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
db.deleteRowID(Integer.parseInt(idArray.get(position)));
list.remove(position);
notifyDataSetChanged();
idArray.remove(position);
//RUN setText() in HistoryFragment from here!
}
});
return view;
}
}
は私のHistoryFragmentクラスです:
package uk.co.rascagneres.clocking_app;
import android.app.Fragment;
import android.database.Cursor;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Jacques on 03/08/2016.
*/
public class HistoryFragment extends Fragment {
DatabaseHandler db;
View myView;
ArrayList<String> historyArray = new ArrayList<String>();
ArrayList<String> idArray = new ArrayList<String>();
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
myView = inflater.inflate(R.layout.history_layout, container, false);
db = new DatabaseHandler(getActivity());
ArrayList<String> list = insertData();
HistoryAdapter adapter = new HistoryAdapter(list, getActivity(), idArray, db);
ListView lView = (ListView)myView.findViewById(R.id.listView);
lView.setAdapter(adapter);
return myView;
}
public ArrayList<String> insertData(){
Cursor c = db.getAllData();
ArrayList<String> list = new ArrayList<String>();
while(c.moveToNext()) {
int id = c.getInt(0);
long in = c.getLong(1);
long out = c.getLong(2);
String outTime;
if(out == 0){
outTime = "N/A";
}else{
outTime = ClockingFragment.getDate(out, "HH:mm");
}
String date = ClockingFragment.getDate(in, "EEE, MMM d");
String inTime = ClockingFragment.getDate(in, "HH:mm");
historyArray.add(date + "\n Clocked In: " + inTime + "\n Clocked Out: " + outTime + "\n");
idArray.add(String.valueOf(id));
}
TextView histAvail = (TextView)myView.findViewById(R.id.noHist);
if (historyArray.isEmpty()){
histAvail.setText("No History Available!");
}else {
histAvail.setText("");
}
return historyArray;
}
public ArrayList<String> getIdArray(){
System.out.println(idArray);
return idArray;
}
public void setText(){
TextView histAvail = (TextView)myView.findViewById(R.id.noHist);
histAvail.setText("No History Available!");
}
}
ListViewの空のビュープロパティを調べるのが好きかもしれません。http://cyrilmottier.com/2011/06/20/listview-tips-tricks-1-handle-emptiness/ – kcoppock
@kcoppockはい、そうではありませんその部分は難しい。そのヒストリーアダプターの中からtextviewを設定することは問題だ –
なぜアダプターからそれをしたいのですか?フラグメントから空のビューを構成すると、アダプタが空のときに自動的に表示されます。 – kcoppock