有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何按名称按字母顺序排列listview项目,并在长按时将其删除?

我想知道如何编写类似于此截图的代码:

  1. 我可以按标题按字母顺序排列(尽管该项目中包含任何其他信息)

  2. 当用户长按该项目一两秒钟时,我可以在哪里删除该项目?(应该会出现一个警告对话框,询问用户是否要删除该项目)(在代码中,这到目前为止还不起作用)

对于这两种情况,其他示例代码将不胜感激。:)

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) 个答案