【发布时间】:2018-10-22 03:02:57
【问题描述】:
我有一个 ArrayAdapter,按下按钮时我想:
- 从我的数组中删除一些数据,这些数据保存在 MainActivity 中
- 从 txt 文件中删除一行(FileManager 处理删除,但我必须访问 MainActivity 中的私有文件)
如何发送这些数据?
deleteDeckButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//i've done it with DECK_NAMES being static public in
//MainActivity and i really dont like this solution
FileManager deckNamesManager = new FileManager(DECK_NAMES); deckNamesManager.deleteLine(manager.getFileName());
// deck files is static public in MainActivity as well
deckFiles.remove(getPosition(manager));
manager.deleteFile();
notifyDataSetChanged();
}
});
这就是我希望 MainActivity 的样子:
public class MainActivity extends AppCompatActivity {
static final int DECK_NAME_REQUEST = 1;
private ListView mListView;
private FlashCardsAdapter deckAdapter;
// ATM deckFiles is static public
private ArrayList<FileManager> deckFiles;
// ATM DECK_NAMES is static public
private File DECK_NAMES; // ATM it's static public
编辑:ArrayAdapter的最终版本
public class FlashCardsAdapter extends ArrayAdapter<FileManager> {
interface Callback {
void onFileDeleted(String fileName);
}
private final Callback mCallback;
public FlashCardsAdapter(Context context, ArrayList<FileManager> users, final Callback callback) {
super(context, 0, users);
mCallback = callback;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
final FileManager manager = getItem(position);
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_view_item, parent, false);
}
TextView mainTextView = convertView.findViewById(R.id.deck_name_id);
Button addCardButton = convertView.findViewById(R.id.action_add_card);
Button deleteDeckButton = convertView.findViewById(R.id.action_delete);
mainTextView.setText(manager.getFileName());
mainTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getContext(), FlashCardActivity.class);
intent.putExtra("fileName", manager.getFileName());
getContext().startActivity(intent);
}
});
addCardButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getContext(), AddCardActivity.class);
intent.putExtra("fileName", manager.getFileName());
getContext().startActivity(intent);
}
});
deleteDeckButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
manager.deleteFile();
mCallback.onFileDeleted(manager.getFileName());
}
});
return convertView;
}
}
【问题讨论】:
-
使用界面制作...
-
你能否给我一些关于这个接口应该是什么样子的提示,不幸的是我仍然是java编程的菜鸟,我不明白在这里使用接口会有什么帮助?跨度>
-
您能发布完整的 ArrayAdapter 代码吗? (不需要进口)
-
@elmorabea 已经解决了,但我会更新它的最终版本(我的意思是这个工作的前一个没有接口,并且 onClick 是不同的,你可以看到。如果这里有问题我很想听听您的反馈。
标签: android android-arrayadapter