以下のコードでは、listViewとカスタム配列アダプタを使用して、会議を保存するリストを作成します(関係者、説明、日付と時刻)。私はスタックのオーバーフローを見て、共通の設定になってきました。私はそれを使う方法を本当に知らない。どんな助けも大歓迎です。ここでまた可能であれば、共有環境設定を使用してデータを保存したい
public class MainActivity extends AppCompatActivity {
ArrayList<SearchResults> searchResults;
private FloatingActionButton add;
private FloatingActionButton clear;
ArrayList<SearchResults> results = new ArrayList<SearchResults>();
final Context context = this;
String time1, people1, description1, mDate, hour, minute, MeridiemIndicator, dateNumber;
int Year, Month, Day, Hour, Minute;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
searchResults = new ArrayList<SearchResults>();
setContentView(R.layout.activity_main);
final ListView lv1 = (ListView) findViewById(R.id.ListView);
final CustomAdapter myAdapter = new CustomAdapter(context, R.layout.custom_row_view, results);
lv1.setAdapter(myAdapter);
add = (FloatingActionButton) findViewById(R.id.add);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
dialogMethod(lv1);
}
});
lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CustomAdapter adapter = (CustomAdapter) parent.getAdapter();
adapter.remove(results.get(position));
adapter.notifyDataSetChanged();
}
});
lv1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long l) {
CustomAdapter adapter = (CustomAdapter) parent.getAdapter();
adapter.remove(results.get(position));
adapter.notifyDataSetChanged();
dialogMethod(lv1);
return true;
}
});
clear = (FloatingActionButton) findViewById(R.id.clear);
clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
results.clear();
CustomAdapter myAdapter = new CustomAdapter(context, R.layout.custom_row_view, results);
lv1.setAdapter(myAdapter);
myAdapter.notifyDataSetChanged();
}
});
}
public void dialogMethod(final ListView lv1) {
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.activity_add_meeting);
dialog.setTitle("Meeting");
//ingredient.getText().toString();
final EditText people = (EditText) dialog.findViewById(R.id.people);
if (people.getText().toString().length() == 0)
people.setError("Required");
final EditText description = (EditText) dialog.findViewById(R.id.description);
if (description.getText().toString().length() == 0)
description.setError("Required");
FloatingActionButton save = (FloatingActionButton) dialog.findViewById(R.id.save);
// if button is clicked, close the custom ingredient_dialog
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatePicker cal = (DatePicker) dialog.findViewById(R.id.calendar);
Year = cal.getYear();
Month = cal.getMonth();
Day = cal.getDayOfMonth();
Month = Month + 1;
TimePicker time = (TimePicker) dialog.findViewById(R.id.clock);
Hour = time.getHour();
Minute = time.getMinute();
dialog.dismiss();
time1 = hour + ":" + minute + MeridiemIndicator;
people1 = people.getText().toString();
description1 = description.getText().toString();
mDate = Year + "/" + Month + "/" + Day;
dateNumber = Year + "";
if (Month < 10) {
dateNumber += "0" + Month;
} else {
dateNumber += Month;
}
if (Day < 10) {
dateNumber += "0" + Day;
} else {
dateNumber += Day;
}
ArrayList<SearchResults> searchResults = GetSearchResults();
lv1.setAdapter(new CustomAdapter(MainActivity.this, R.layout.custom_row_view, searchResults));
}
});
dialog.show();
}
private ArrayList<SearchResults> GetSearchResults() {
SearchResults sr1 = new SearchResults();
sr1.setName(" Meeting With: " + people1);
sr1.setTimeOfMeeting(" Starts At: " + time1);
sr1.setDescription(" Details: " + description1);
sr1.setDate(" Date: " + mDate);
sr1.setDateNumber(dateNumber);
results.add(sr1);
Collections.sort(results, new Comparator<SearchResults>() {
public int compare(SearchResults x, SearchResults y) {
return Integer.parseInt(x.getDateNumber()) - Integer.parseInt(y.getDateNumber());
}
});
return results;
}
}
私のカスタム・アダプタのコード
public class CustomAdapter extends ArrayAdapter {
private static ArrayList<SearchResults> searchArrayList;
private LayoutInflater mInflater;
public CustomAdapter(Context context, int custom_row_view, ArrayList<SearchResults> results) {
super(context,custom_row_view,results);
searchArrayList = results;
mInflater = LayoutInflater.from(context);
}
public int getCount() {
return searchArrayList.size();
}
public Object getItem(int position) {
return searchArrayList.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.custom_row_view, null);
holder = new ViewHolder();
holder.txtName = (TextView) convertView.findViewById(R.id.name);
holder.txtTimeOfMeeting = (TextView) convertView.findViewById(R.id.timeOfMeeting);
holder.txtDescription = (TextView) convertView.findViewById(R.id.description);
holder.txtDate = (TextView) convertView.findViewById(R.id.date);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.txtName.setText(searchArrayList.get(position).getName());
holder.txtTimeOfMeeting.setText(searchArrayList.get(position).getTimeOfMeeting());
holder.txtDescription.setText(searchArrayList.get(position).getDescription());
holder.txtDate.setText(searchArrayList.get(position).getDate());
return convertView;
}
static class ViewHolder {
TextView txtName;
TextView txtTimeOfMeeting;
TextView txtDescription;
TextView txtDate;
}
}
[データの保存方法を共有する]の重複(http://stackoverflow.com/questions/6015197/how-to-save-data-using-shared-preferences) –
あなたはリストを保存する必要がありますようにデータベースを使用する必要があります、共有設定は1つまたは2つのエントリに使用されます... – Chol