0

私は初めての Android アプリケーションを作成していますが、残念ながら立ち往生しています。アプリケーションは非常に単純です: 開始ページには、次のような項目を持つ ListView があります: 1 番目のグループ 2 番目のグループ 3 番目のグループ ...

これらの項目のいずれかをクリックすると、新しいページが表示され、説明が含まれる単一の textview 要素が表示されます。「第 1 グループ」項目をクリックすると、リストビューが非表示になり、「第 1 グループの説明」テキストを含む新しいページが表示されます。

これまでのところ、アイテムを含むリストビューを表示できますが、それらをクリックしても何も起こりません (いくつかの基本的なものを見逃していると思いますが、非常に初心者なので、簡単に見つけることができません)。

import java.util.ArrayList;
import java.util.Arrays;

import android.app.Activity;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ListView;
import android.widget.TextView;
import android.view.*;

public class SimpleListViewActivity extends Activity {
    LinearLayout.LayoutParams layoutParams;
    LinearLayout ll;


  private ListView mainListView ;
  private ArrayAdapter<String> listAdapter ;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // Find the ListView resource. 
    mainListView = (ListView) findViewById( R.id.mainListView );

    // populate the List of groups
    String[] GROUP = getResources().getStringArray(R.array.group);  
    ArrayList<String> GrList = new ArrayList<String>();
    GrList.addAll( Arrays.asList(GROUP) );

    // Create ArrayAdapter using the list.
    listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, GrList);

    // Set the ArrayAdapter as the ListView's adapter.
    mainListView.setAdapter( listAdapter );  
    ll = (LinearLayout)findViewById(R.id.LinearLayout);
    layoutParams = new LinearLayout.LayoutParams
    (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

    mainListView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            TextView t = (TextView) findViewById(R.id.textView1);
            String[] DESC = getResources().getStringArray(R.array.desc); 
            t.setText(DESC[position]);
            ll.addView(t);
        //This is the point that is wrong for sure (and others maybe also). I cannot get the textview shown
        }

    });

  }

}

ご協力いただきありがとうございます。

4

3 に答える 3

0

トースト メッセージを表示するか、onItemClick() メソッド内にブレークポイントを設定して、到達していないことを確認しましたか? 私の推測では、ここに記載されている問題の 1 つに遭遇しているということです。

ビューを追加した後に LinearLayout を更新する

于 2012-08-23T18:21:13.753 に答える
0

まず、ページという言葉を使うのをやめましょう。それをアクティビティと呼びます (Android ゾーンに移動する必要があります)

クリックが発生したら、次のように新しいアクティビティを開始します。

mainListView.setOnItemClickListener(new OnItemClickListener() {

String textToPass = GrList.get(position)
Intent i = new Intent(getBaseContext(), SecondActivity.class);                      
i.putExtra("textToPass", textToPass);
startActivity(i);

}

明らかに、対応するレイアウト ファイルを定義した 2 番目のアクティビティが必要です。また、2 番目のアクティビティで、textToPass 文字列を取得するために最初のアクティビティからバンドルとエクストラを取得する方法を調べます。

于 2012-08-23T18:52:20.987 に答える
0

あなたの R.layout.main は、それぞれ R.id.mainListView と R.id.LinearLayout の ID を持つリストビューと線形レイアウトを保持していると仮定しています。

例: 高さ、幅など、必要な明らかな属性のいくつかを省略しました。

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      >
      <ListView android:id="@+id/mainListView" />
      <LinearLayout android:id="@+id/LinearLayout" />
 </RelativeLayout>

アイテムのクリックでは、行ったようにテキストビューを追加してから、mainListView.setVisibility(View.INVISIBLE) と ll.setVisibility(View.VISIBLE) を設定するだけです。

R.layout.main が RelativeLayout をルート ノードとして使用しておらず、代わりに LinearLayout を使用している場合でも、非表示にする場合は Visibilities を View.GONE に設定し、View を使用することで同じ効果を得ることができます。 .VISIBLE 表示する場合。

リスト ビューを表示できるように戻すには、アクティビティで onBackPressed() をオーバーライドして、2 つの項目の可視性を反転します。また、リニア レイアウトからすべてのビューを削除することを忘れないでください。これにより、次にグループ内のアイテムが選択されたときに、それが追加されたときにリニア レイアウト内の唯一のアイテムになります。

次のアイテムを表示するために新しいアクティビティを起動するなど、これを達成するためのはるかに簡単な方法がありますが、すべてを 1 つのアクティビティ内に保持しているようです。基本アクティビティ クラスの代わりに ListActivity を使用することも考えます。

お役に立てれば。

于 2012-08-23T18:43:20.933 に答える