java如何按名称按字母顺序排列listview项目,并在长按时将其删除?
我想知道如何编写类似于此截图的代码:
我可以按标题按字母顺序排列(尽管该项目中包含任何其他信息)
当用户长按该项目一两秒钟时,我可以在哪里删除该项目?(应该会出现一个警告对话框,询问用户是否要删除该项目)(在代码中,这到目前为止还不起作用)
对于这两种情况,其他示例代码将不胜感激。:)
Screenshot of Movies Not Alphabetized
这是我想用来按片名组织电影的标签。我只需要弄清楚如何按标题按字母顺序排列每个项目。例如,《老友记》第一季、第二季和。。。应该在项目列表的末尾
package applications.werst.movie;
import 安卓.app.AlertDialog;
import 安卓.content.Context;
import 安卓.content.DialogInterface;
import 安卓.content.Intent;
import 安卓.net.Uri;
import 安卓.os.Bundle;
import 安卓.support.v4.app.Fragment;
import 安卓.util.Log;
import 安卓.view.LayoutInflater;
import 安卓.view.View;
import 安卓.view.ViewGroup;
import 安卓.widget.AdapterView;
import 安卓.widget.LinearLayout;
import 安卓.widget.ListView;
import com.google.安卓.gms.ads.AdView;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
public class Tab2Fragment extends Fragment {
private static final String FILE_NAME = "TitleItemFileName.txt";
private static final String INTERNAL_DIR = "TitleItemDir";
private String TAG = "InternalFileWrite";
ItemListAdapter mAdapter;
public Tab2Fragment () {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootview = inflater.inflate(R.layout.tab2_current_inventory_view, container, false);
mAdapter = new ItemListAdapter(getActivity().getApplicationContext());
ListView listView = (ListView) rootview.findViewById(R.id.tab2_LV);
LinearLayout linearLayout = (LinearLayout) rootview.findViewById(R.id.tab2_LL);
try {
saveItems();
} catch (FileNotFoundException e) {
Log.i(TAG, "FileNotFoundException");
}
try {
loadItems(linearLayout, rootview, container);
} catch (IOException e) {
Log.i(TAG, "IOException");
}
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0, View v,
int index, long arg3) {
// TODO Auto-generated method stub
//Open alert dialog here
showMoreInfo();
return true;
}
});
return rootview;
}
private void showMoreInfo() {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity().getApplicationContext());
builder.setTitle("Do You Want To Delete This Movie/TV Show?");
builder.setPositiveButton(R.string.dialog_yes_button, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.moma.org/m"));
startActivity(intent);
}
});
builder.setNegativeButton(R.string.dialog_no_button, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
/** Called when leaving the activity */
@Override
public void onPause() {
super.onPause();
}
/** Called when returning to the activity */
@Override
public void onResume() {
super.onResume();
}
/** Called before the activity is destroyed */
@Override
public void onDestroy() {
super.onDestroy();
}
private void loadItems(LinearLayout linearlayout, View rootview, ViewGroup container) throws IOException {
FileInputStream fis = getContext().getApplicationContext().openFileInput(FILE_NAME);
BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
int pos = -1;
String idnumber = "";
String title = "";
String rating = "";
String runtime = "";
String genres = "";
while (null != (idnumber = reader.readLine())) {
pos++;
title = reader.readLine();
rating = reader.readLine();
runtime = reader.readLine();
genres = reader.readLine();
mAdapter.add(new TitleItem(idnumber, title, rating, runtime, genres));
linearlayout.addView(mAdapter.getView(pos, rootview, container));
}
}
public void deleteRecursive(File fileOrDirectory) {
if (fileOrDirectory.isDirectory()) {
for (File child : fileOrDirectory.listFiles()) {
deleteRecursive(child);
}
}
fileOrDirectory.delete();
}
private void saveItems() throws FileNotFoundException {
String dir = getContext().getApplicationContext().getFilesDir().getAbsolutePath();
File f0 = new File(dir, FILE_NAME);
deleteRecursive(f0);
FileOutputStream fos = getContext().getApplicationContext().openFileOutput(FILE_NAME, Context.MODE_PRIVATE);
PrintWriter writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
fos)));
writer.println("1");
writer.println("Avengers");
writer.println("PG-13");
writer.println("125");
writer.println("Action,Adventure,Animation,Biography,Comedy,Crime,Documentary,Drama,Family,Fantasy,War");
writer.println("2");
writer.println("Beethoven");
writer.println("PG");
writer.println("96");
writer.println("Comedy,Western");
writer.println("3");
writer.println("Friends: Season 1, Freinds Season 2, Friends Season 3, Friends Season 4, Friends Season 5, Friends Season 6");
writer.println("TV G");
writer.println("1500");
writer.println("Action,Adventure,Animation,Family,Fantasy");
writer.println("4");
writer.println("Dodgeball");
writer.println("PG-13");
writer.println("111");
writer.println("Comedy");
writer.println("5");
writer.println("Catch Me If You Can");
writer.println("PG-13");
writer.println("150");
writer.println("Action,Comedy");
writer.close();
}
}
下面是我用来创建每个项目的ItemListAdapter
package applications.werst.movie;
import 安卓.content.Context;
import 安卓.view.LayoutInflater;
import 安卓.view.View;
import 安卓.view.ViewGroup;
import 安卓.widget.BaseAdapter;
import 安卓.widget.RelativeLayout;
import 安卓.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class ItemListAdapter extends BaseAdapter {
private final List<TitleItem> mItems = new ArrayList<TitleItem>();
private final Context mContext;
private static final String TAG = "Lab-UserInterface";
public ItemListAdapter(Context context) {
mContext = context;
}
public void add(TitleItem item) {
mItems.add(item);
notifyDataSetChanged();
}
public void clearitem(int position) {
mItems.remove(position);
notifyDataSetChanged();
}
@Override
public int getCount() {
return mItems.size();
}
@Override
public Object getItem(int pos) {
return mItems.get(pos);
}
@Override
public long getItemId(int pos) {
return pos;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final TitleItem titleItem = (TitleItem) getItem(position);
RelativeLayout itemLayout = null;
LayoutInflater relativeLayoutInflator = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
itemLayout = (RelativeLayout) relativeLayoutInflator.inflate(R.layout.current_inventory_item, parent, false);
final TextView TitleView = (TextView) itemLayout.findViewById(R.id.TitleView);
TitleView.setText(titleItem.getTitle());
final TextView RatingView = (TextView) itemLayout.findViewById(R.id.RatingView);
RatingView.setText(titleItem.getRating());
final TextView RuntimeView = (TextView) itemLayout.findViewById(R.id.RuntimeView);
RuntimeView.setText(titleItem.getRuntime());
final TextView GenresView = (TextView) itemLayout.findViewById(R.id.GenresView);
GenresView.setText(titleItem.getGenres());
return itemLayout;
}
}
共 (0) 个答案