Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单击按钮删除Listview行_Android_Listview - Fatal编程技术网

Android 单击按钮删除Listview行

Android 单击按钮删除Listview行,android,listview,Android,Listview,我有一个列表视图,可以获取美联储的问题及其相应的选择: 下面的构造函数获取所有必要的信息以提供Listview。所有字符串值都在ArrayList中 public BaseQuestionAdapter(Activity a, ArrayList<String> b, ArrayList<String> c, ArrayList<String> d, ArrayList<String> e) { activity = a;

我有一个列表视图,可以获取美联储的问题及其相应的选择:

下面的构造函数获取所有必要的信息以提供Listview。所有字符串值都在ArrayList中

 public BaseQuestionAdapter(Activity a, ArrayList<String> b, ArrayList<String> c, ArrayList<String> d, ArrayList<String> e) {
        activity = a;
        this.questionTitleArray = b;
        this.choicesArray = c;
        this.questionIdArray = d;
        this.userIdArray = e;
        inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

问题是,我不知道为了实现这一点,应该准确地引用什么。不知道这是choicesArray还是我收到的任何其他资源。目前,当我长时间点击一个按钮时,什么也没发生。有没有关于我错在哪里的线索?谢谢。

正如Luksprog在评论中所说的,您需要从getCount中引用的容器中删除项目。然而,我也希望提供一个改进。不要使用四个不同的字符串列表,而是使用一个包含每个字符串的对象

例如


拥有此类后,可以使用包含对象的单个列表。这样,您就不会混淆哪些列表项应该被删除才能更改列表。

问题是,我不知道为了更改列表,应该准确地引用什么。-您需要引用适配器所基于的列表。在没有看到适配器的getCount方法的情况下,我假设列表是questionTitleArray。@Luksprog但如何在BaseAdapter中引用该列表?当BaseAdapter通过httpAsync调用进行调用和处理时,该列表将在另一个线程中实例化。创建它的位置无关紧要。要更改适配器删除行,需要更改适配器所基于的列表。我不知道当您将所有列表传递给适配器时,您在想什么参考。您是否尝试在适配器的getCount方法中使用的列表上调用长单击侦听器?
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;

vi = inflater.inflate(R.layout.question_layout, null);

LinearLayout questionContainer = (LinearLayout) vi.findViewById(R.id.question_container);
LinearLayout choicesContainer = (LinearLayout) vi.findViewById(R.id.choices_container);

ViewGroup answersContainerParent = (ViewGroup) choicesContainer.getParent();
if (answersContainerParent != null)
    answersContainerParent.removeView(choicesContainer);

JSONArray choicesJSONArray = new JSONArray(choicesArray);

try {
    String bhb = choicesJSONArray.get(position).toString();
    jsnArray = new JSONArray(bhb);
} catch (JSONException e) {
    e.printStackTrace();
}

for (int answersArrayIterator = 0; answersArrayIterator < jsnArray.length(); answersArrayIterator++) {
    try {
        final Button choiceButton = new Button(activity);
        choiceButton.setId(buttonId);
        String questionId = questionIdArray.get(position).toString();

        choiceButton.setTag(questionId);
        choiceButton.setTag(position);

        ViewGroup layout = (ViewGroup) choiceButton.getParent();
        if (layout != null)
            layout.removeView(choiceButton);

        choiceButton.setText(jsnArray.get(answersArrayIterator).toString());
        choiceButton.setTextSize(16);
        choiceButton.setBackgroundResource(R.drawable.question_button_template_style);
        choiceButton.setGravity(Gravity.CENTER);
        choiceButton.setWidth(270);

        choiceButton.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                String choiceString = choiceButton.getText().toString();
                Object questionId = choiceButton.getTag();
                setDataToBeSent(userId, questionId, choiceString);

                Integer index = (Integer) v.getTag();
                System.out.println("SATURN ASCENDS: " + index);
                choicesArray.remove(index);
                notifyDataSetChanged();

                new HttpAsyncTask2().execute();

                return false;
            }
        });

        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        params.setMargins(10, 10, 10, 10);

        choiceButton.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        choiceButton.setLayoutParams(params);

        buttonId++;
        choicesContainer.addView(choiceButton);
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

TextView questionTitleET = (TextView) vi.findViewById(R.id.question_title);
String questionTitle = questionTitleArray.get(position).toString();
questionTitleET.setText(questionTitle);

ViewGroup questionTitleETParent = (ViewGroup) questionTitleET.getParent();
if (questionTitleETParent != null)
questionTitleETParent.removeView(questionTitleET);

questionContainer.addView(questionTitleET);
questionContainer.addView(choicesContainer);

return vi;
}
choiceButton.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
    Integer index = (Integer) v.getTag();
    System.out.println("SATURN ASCENDS: " + index);
    choicesArray.remove(index);
    notifyDataSetChanged();

    return false;
}
});
public class MyClass {
    public String questionTitle;
    public String choice;
    public String questionId;
    public String userId;
}