ListView不会显示超过8个ImageView

时间:2014-02-11 00:16:34

标签: java android listview imageview

我正在使用json从服务器请求中解码jpeg图像。我用自定义ListView适配器和一些文本显示它们。

图像可以正确显示ListView中的前8个ImageView,但之后,它将不再显示图像(它将显示文本)。例如,如果我总共有10个图像,则最后两个图像将不会显示在ListView中,但如果我删除前两个图像,则最后两个图像将显示,因此不必担心检索实际图像。 / p>

在我的主要活动(NotesActivity)上,我有一个按钮转到另一个执行asyntask的活动,在onPostExecute中的异步任务中,它返回到主活动,它应该显示更新的列表(并且它是的,除非有超过8张图片)。

我不知道从哪里开始,有什么建议吗?

我的包含ListView的活动

public class NotesActivity extends Activity implements OnClickListener {

    String key = "NOTES";
    String key2 = "UPDATE_NOTES";

    Gson gson = new Gson();
    // Notes myNotes = new Notes();
    NotesList myNotes = new NotesList();
    String bId;
    String res = null;
    EditText notes;
    Button save;
    private Button createNote;
    private int position;
    private String type;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.notes_layout);
        createNote = (Button) findViewById(R.id.notes_layout_btn_createNote);
        Bundle bundle = this.getIntent().getExtras();
        position = bundle.getInt("position");
        type = bundle.getString("type");

        //
        if (type.equals("LISTINGS")) {
            Listings it = ListingsFragment.myListings.getListings().get(
                    position);
            bId = it.getBID();
            notes = (EditText) findViewById(R.id.notes);
        }
        //
        if (type.equals("SHARED")) {
            Listings it = SharedFragment.myShared.getListings().get(position);
            bId = it.getBID();
            notes = (EditText) findViewById(R.id.notes);
        }
        GetNotes getNotes = new GetNotes();
        try {
            NotesList copy = new NotesList();

            getNotes.execute(key, bId).get();
            for (int j = 0; j < myNotes.getNotes().size(); j++) {
                Notes note = myNotes.getNotes().get(j);
                System.out.println("Removed value: " + note.getIsRemoved());
                if (note.getIsRemoved() == null) {
                    copy.getNotes().add(note);
                }
            }
            NotesAdapter adapter = new NotesAdapter(this, R.layout.note_row,
                    copy.getNotes());
            ListView lv = (ListView) findViewById(R.id.notes_layout_lv_notesList);
            lv.setAdapter(adapter);
        } catch (Exception e) {
        }
        createNote.setOnClickListener(this);

    }

    private class GetNotes extends AsyncTask<String, String, NotesList> {

        @Override
        protected NotesList doInBackground(String... things) {

            ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
            postParameters.add(new BasicNameValuePair("key", things[0]));
            postParameters.add(new BasicNameValuePair("bId", things[1]));

            // String valid = "1";
            String response = null;

            try {
                response = CustomHttpClient.executeHttpPost(
                        "http://propclip.dev/mobile.php", postParameters);
                res = response.toString();
                // System.out.println("This is the response " + res);
                // res = res.trim();
                // res= res.replaceAll("\\s+","");
                // error.setText(res);
                // System.out.println(res);
                myNotes = gson.fromJson(res, NotesList.class);
                // System.out.println(res);
            } catch (Exception e) {
                res = e.toString();
            }
            return myNotes;
        }

        @Override
        protected void onPostExecute(NotesList res) {
        }
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.notes_layout_btn_createNote:
            ProfileDataSource datasource = new ProfileDataSource(this);
            datasource.open();
            PropClipGlobal pcg = datasource.getUserIdenity();
            Intent intent = new Intent(this, NewNoteActivity.class);
            intent.putExtra("bId", bId);
            intent.putExtra("uId", pcg.getUID());
            intent.putExtra("username", pcg.getEm());
            intent.putExtra("position", position);
            intent.putExtra("type", type);
            startActivity(intent);
        }
    }
}

我的自定义适配器

public class NotesAdapter extends ArrayAdapter<Notes> {
    List<Notes> notes;
    Context context;

    public NotesAdapter(Context context, int resource, List<Notes> notes) {
        super(context, resource, notes);
        this.notes = notes;
        this.context = context;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        if (v == null) {
            LayoutInflater vi;
            vi = LayoutInflater.from(getContext());
            v = vi.inflate(R.layout.note_row, null);
        }

        Notes note = notes.get(position);
        ImageView icon = (ImageView) v.findViewById(R.id.note_row_icon);
        TextView name = (TextView) v.findViewById(R.id.note_row_name);
        TextView message = (TextView) v.findViewById(R.id.note_row_message);
        TextView date = (TextView) v.findViewById(R.id.note_row_date);
        String input = note.getNoteDate();
        SimpleDateFormat inputDf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat outputDf = new SimpleDateFormat("dd, yyyy");
        SimpleDateFormat monthFormat = new SimpleDateFormat("MM");
        Date myDate = null;
        try {
            myDate = inputDf.parse(input);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        String month = monthFormat.format(myDate);
        date.setText(getMonth(Integer.parseInt(month)) + " "
                + outputDf.format(myDate));
        message.setText(note.getNote());
        name.setText(note.getFirstName() + " " + note.getLastName());
        // System.out.println(p.getFileData());
        byte[] imageAsBytes = Base64.decode(note.getFileData().getBytes(),
                position);
        icon.setImageBitmap(BitmapFactory.decodeByteArray(imageAsBytes, 0,
                imageAsBytes.length));
        System.out.println(note.getFileData());
        return v;
    }

    public String getMonth(int month) {
        return new DateFormatSymbols().getMonths()[month - 1];
    }
}

最终进入主要活动的活动(NotesActivity)

public class NewNoteActivity extends Activity implements OnClickListener {
    private String uId;
    private String bId;
    private String username;
    private String response;
    private String key = "UPDATE_NOTES";
    private Button submit;
    private EditText note;
    private int position;
    private String type;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_new_note);
        submit = (Button) findViewById(R.id.activity_new_note_btn_submit);
        note = (EditText) findViewById(R.id.activity_new_note_et_note);
        Intent intent = getIntent();
        bId = intent.getStringExtra("bId");
        uId = intent.getStringExtra("uId");
        username = intent.getStringExtra("username");
        position = intent.getIntExtra("position", 0);
        type = intent.getStringExtra("type");
        submit.setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.new_note, menu);
        return true;
    }

    private class UpdateNotes extends AsyncTask<String, String, String> {

        @Override
        protected String doInBackground(String... values) {

            ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
            postParameters.add(new BasicNameValuePair("key", values[0]));
            postParameters.add(new BasicNameValuePair("bId", values[1]));
            postParameters.add(new BasicNameValuePair("uId", values[2]));
            postParameters.add(new BasicNameValuePair("username", values[3]));
            postParameters.add(new BasicNameValuePair("note", values[4]));

            String response = null;

            try {
                response = CustomHttpClient.executeHttpPost(
                        "http://propclip.dev/mobile.php", postParameters);
                response = response.toString();

            } catch (Exception e) {
                response = e.toString();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String response) {
            Intent intent = new Intent(getApplicationContext(),
                    NotesActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            intent.putExtra("position", position);
            intent.putExtra("type", type);
            startActivity(intent);
            Toast toast = Toast.makeText(getApplicationContext(),"Added note!", Toast.LENGTH_LONG);
            toast.setGravity(Gravity.CENTER, 0, 0);
            toast.show();
        }
    }

    @Override
    public void onClick(View v) {
        String noteMessage = note.getText().toString();
        UpdateNotes updateNotes = new UpdateNotes();
        updateNotes.execute(key, bId, uId, username, noteMessage);
    }
}

0 个答案:

没有答案