滚动listView后保留textView的内容

时间:2018-05-11 16:34:55

标签: android listview

我有一个listView,在这个listView中我有2个textView,只需单击一下即可显示其内容并单击隐藏它们。我的卷轴有问题。当我用长按显示内容时,我向下滚动,在向上滚动后,我看到textView的内容消失了。如何在滚动后保留此内容?这是关于长按的代码:

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
                final Insegnamento insegnamento = insegnamenti.get(i);
                TextView nomeDoc = (TextView) view.findViewById(R.id.nomeDocente);
                nomeDoc.setText(R.string.nDocente);
                String nDoc = nomeDoc.getText().toString() + " " + insegnamento.getNomeDoc();
                nomeDoc.setText(nDoc);
                nomeDoc.setTextColor(Color.argb(255,48,63,159));

                TextView cogDoc = (TextView) view.findViewById(R.id.cognomeDocente);
                cogDoc.setText(R.string.cDocente);
                String cDoc = cogDoc.getText().toString() + " " + insegnamento.getCognomeDoc();
                cogDoc.setText(cDoc);
                cogDoc.setTextColor(Color.argb(255,48,63,159));
                Toast.makeText(DocActivity.this,R.string.info_doc,Toast.LENGTH_SHORT).show();

                return true;

            }
        });

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                final Insegnamento insegnamento = insegnamenti.get(i);
                TextView nomeDoc = (TextView) view.findViewById(R.id.nomeDocente);
                nomeDoc.setText("");
                TextView cogDoc = (TextView) view.findViewById(R.id.cognomeDocente);
                cogDoc.setText("");
            }
        });

这是关于listView的代码

protected void onPostExecute(String res){
    if(res != null){
        if(response_code==404){
            Toast.makeText(getApplicationContext(), R.string.noIns, Toast.LENGTH_LONG).show();
            Intent intent = new Intent(DocActivity.this, MainActivity.class);
            startActivity(intent);
        }else if(response_code==1000) {
            Toast.makeText(getApplicationContext(), R.string.rete, Toast.LENGTH_LONG).show();
            Intent intent = new Intent(DocActivity.this, MainActivity.class);
            startActivity(intent);
        }else{
            try{
                JSONArray jsonArray = new JSONArray(res);
                for ( int i = 0; i < jsonArray.length(); i++){
                    JSONObject object = jsonArray.getJSONObject(i);

                    String cognomeDocente = object.getString("docenteCognome");
                    String nomeDocente = object.getString("docenteNome");
                    String insegnamento = object.getJSONObject("chiaveUdContestualizzata").getString("udDes");
                    String codiceInsegnamento = object.getJSONObject("chiaveUdContestualizzata").getString("udCod");
                    Insegnamento ins = new Insegnamento(nomeDocente,cognomeDocente,codiceInsegnamento,insegnamento);
                    insegnamenti.add(ins);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

        ListAdapter adapter;
        adapter = new ListAdapter(DocActivity.this, insegnamenti);
        listView.setAdapter(adapter);
        listView.setVisibility(View.VISIBLE);

谢谢

1 个答案:

答案 0 :(得分:0)

在您的Insegnamento对象模型中添加一个字段,例如:

boolean isUnlocked;

然后当用户在长按时解锁textview时更新模型:

insegnamenti.get(position).setIsUnlocked(true); 
updateListViewdata(insegnamenti);// to update your listview

你的updateListViewdata方法应如下所示:

public void updateListViewData(Insegnamenti updatedInsegnamenti){
this.insegnamenti = updatedInsegnamenti;
notifydatasetchanged();
}

然后检查getview()中的isUnlock标志以显示更新的视图。 希望它有所帮助。