Android ListView позиционирование для TextView - PullRequest
0 голосов
/ 16 июля 2011

Я не знаю, с чего начать задавать этот вопрос, поэтому я просто попытаюсь описать мою проблему как можно лучше ... В настоящее время я работаю над ListView с пользовательским адаптером списка, который надувает 2 текста.Просмотров и флажок.Один textView представляет собой описание опции, где другой textView сохраняется, когда мне нужно использовать его для отображения данных.Когда пользователь нажимает на элемент в списке, он появляется с диалоговым окном editText.Я получил его, чтобы сохранить текст и отобразить его, но у меня проблема в том, что когда он отображает данные, он не находится на правильном элементе ListView ... например: http://www.vbsteven.be/blog/wp-content/uploads/2009/07/screenshotcalllog.png Скажите, если я хотелотобразить информацию, которую я получил из моего диалогового окна в первом слоте listView.Он отображается случайным образом в 3-й, 2-й или 4-й позиции.Это кажется такой простой проблемой, но я некоторое время боролся ...

xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

  <TextView android:id="@+id/rowTextView" 
    android:layout_width="wrap_content" 
    android:layout_height="70dp"
    android:padding="12dp"
    android:textSize="16sp" >
  </TextView>

  <TextView android:id="@+id/alarm_name_text" 
   android:layout_height="wrap_content" 
   android:text="" 
   android:layout_toRightOf="@+id/rowTextView" 
   android:layout_width="fill_parent">
   </TextView>

  <CheckBox android:id="@+id/CheckBox01" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="10dp"
    android:layout_alignParentRight="true" android:layout_marginRight="6sp"
    android:focusable="false">
  </CheckBox>

</RelativeLayout>

Активность:

    @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case DIALOG_TEXT_ENTRY:

            LayoutInflater mInflater = LayoutInflater.from(this);
            final View textEntryView = mInflater.inflate(
                    R.layout.alert_text_entry, null);
            /*final View textEntryView1 = mInflater.inflate(R.layout.row, null);*/
            final EditText savedText = ((EditText)textEntryView.findViewById(R.id.password_edit));
            final TextView rowSavedText = ((TextView)findViewById(R.id.alarm_name_text));
            return new AlertDialog.Builder(AlarmList.this)
                    .setIcon(R.drawable.alert_icon)
                    .setTitle("Enter your name")
                    .setView(textEntryView)
                    .setPositiveButton("accept",
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    String temp = savedText.getText().toString();
                                    rowSavedText.setText(temp);
                                    rowSavedText.setVisibility(0);
                                }
                            })
                    .setNegativeButton("Cancel", new OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {

                        }
                    }).create();
        }
        return null;
    }

Если кто-то хочет увидеть какую-либо другую часть моего кодаза помощь, пожалуйста, дайте мне знать.Заранее спасибо!

Вот мой список Адаптер и данные в нем:

planets = new Planet[] { new Planet("Turn On Alarm"),
                    new Planet("Alarm Name"), new Planet("Time"),
                    new Planet("Sound"), new Planet("Vibrate"),
                    new Planet("Repeat"), new Planet("Volume Control"),
                    new Planet("Second Alarm") };
        }
        ArrayList<Planet> planetList = new ArrayList<Planet>();
        planetList.addAll(Arrays.asList(planets));


listAdapter = new PlanetArrayAdapter(this, planetList);

/ ** Пользовательский адаптер для отображения массива объектов Planet.* / закрытый класс PlanetArrayAdapter расширяет ArrayAdapter {

    private LayoutInflater inflater;
    public PlanetArrayAdapter(Context context, List<Planet> planetList) {
        super(context, R.layout.row, R.id.rowTextView, planetList);

        // Cache the LayoutInflate to avoid asking for a new one each time.
        inflater = LayoutInflater.from(context);

    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // Planet to display
        Planet planet = (Planet) this.getItem(position);


        // The child views in each row.
        CheckBox checkBox;
        TextView textView;
        Spinner mySpinner;


// Create a new row view
            if (convertView == null) {
                convertView = inflater.inflate(R.layout.row, null);

                // Find the child views.
                textView = (TextView) convertView
                        .findViewById(R.id.rowTextView);
                checkBox = (CheckBox) convertView.findViewById(R.id.CheckBox01);
                // Optimization: Tag the row with it's child views, so we don't
                // have to
                // call findViewById() later when we reuse the row.
                convertView.setTag(new PlanetViewHolder(textView, checkBox));

                // If CheckBox is toggled, update the planet it is tagged with.
                checkBox.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View v) {
                        CheckBox cb = (CheckBox) v;
                        Planet planet = (Planet) cb.getTag();
                        planet.setChecked(cb.isChecked());
                    }
                });
            }
            // Reuse existing row view
            else {
                // Because we use a ViewHolder, we avoid having to call
                // findViewById().
                PlanetViewHolder viewHolder = (PlanetViewHolder) convertView
                        .getTag();
                checkBox = viewHolder.getCheckBox();
                textView = viewHolder.getTextView();
            }

            // Tag the CheckBox with the Planet it is displaying, so that we can
            // access the planet in onClick() when the CheckBox is toggled.
            checkBox.setTag(planet);

            // Display planet data
            checkBox.setChecked(planet.isChecked());
            textView.setText(planet.getName());

            return convertView;
        }

1 Ответ

1 голос
/ 16 июля 2011

Не думайте, что вы можете установить эти текстовые представления из диалогового окна. Вы должны будете установить их из своего адаптера списка. Получите имя из диалогового окна, как вы делаете, затем добавьте имя в набор данных своего настраиваемого адаптера и, наконец, установите адаптер снова или notifyDataSetChanged ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...