2017-12-27 7 views
2

をクリックしたときに、私はプレイヤーが北、南、東、西に行くことができるミニアドベンチャーゲームを作る、表示などのListViewユーザーがボタン

は、今私は、プレイヤーが在庫を維持したいが、私はしないでくださいGUIを作る方法を知っている。ユーザーが在庫ボタンをクリックすると、ListViewが表示されます。

enter image description here

ビューのためのコードは以下です。

package dev.game.adventure; 

import android.annotation.SuppressLint; 
import android.content.Context; 
import android.graphics.*; 
import android.support.annotation.Nullable; 
import android.os.*; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.AppCompatActivity; 
import android.text.method.ScrollingMovementMethod; 
import android.util.AttributeSet; 
import android.view.*; 
import android.widget.*; 
import java.util.Collection; 
import java.util.Iterator; 


/** 
* An adventure that shows and hides the system UI (i.e. 
* status bar and navigation/system bar) with user interaction. 
*/ 
public class AdventureActivity extends AppCompatActivity { 
    /** 
    * Whether or not the system UI should be auto-hidden after 
    * {@link #AUTO_HIDE_DELAY_MILLIS} milliseconds. 
    */ 
    private static final boolean AUTO_HIDE = true; 
    PlaceView ag; 

    /** 
    * If {@link #AUTO_HIDE} is set, the number of milliseconds to wait after 
    * user interaction before hiding the system UI. 
    */ 
    private static final int AUTO_HIDE_DELAY_MILLIS = 3000; 

    /** 
    * Some older devices needs a small delay between UI widget updates 
    * and a change of the status and navigation bar. 
    */ 
    private static final int UI_ANIMATION_DELAY = 300; 
    private final Handler mHideHandler = new Handler(); 
    private View mContentView; 
    private final Runnable mHidePart2Runnable = new Runnable() { 
     @SuppressLint("InlinedApi") 
     @Override 
     public void run() { 
      // Delayed removal of status and navigation bar 

      // Note that some of these constants are new as of API 16 (Jelly Bean) 
      // and API 19 (KitKat). It is safe to use them, as they are inlined 
      // at compile-time and do nothing on earlier devices. 
      mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE 
        | View.SYSTEM_UI_FLAG_FULLSCREEN 
        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY 
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 
     } 
    }; 
    private View mControlsView; 
    private final Runnable mShowPart2Runnable = new Runnable() { 
     @Override 
     public void run() { 
      // Delayed display of UI elements 
      ActionBar actionBar = getSupportActionBar(); 
      if (actionBar != null) { 
       actionBar.show(); 
      } 
      mControlsView.setVisibility(View.VISIBLE); 
     } 
    }; 
    private boolean mVisible; 
    private final Runnable mHideRunnable = new Runnable() { 
     @Override 
     public void run() { 
      hide(); 
     } 
    }; 
    /** 
    * Touch listener to use for in-layout UI controls to delay hiding the 
    * system UI. This is to prevent the jarring behavior of controls going away 
    * while interacting with activity UI. 
    */ 
    private final View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      if (AUTO_HIDE) { 
       delayedHide(AUTO_HIDE_DELAY_MILLIS); 
      } 
      return false; 
     } 
    }; 

    TextView scrollable; 

    static final String[] FRUITS = new String[] { "Apple", "Avocado", "Banana", 
      "Blueberry", "Coconut", "Durian", "Guava", "Kiwifruit", 
      "Jackfruit", "Mango", "Olive", "Pear", "Sugar-apple" }; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_fullscreen); 
     scrollable = (TextView) findViewById(R.id.textView1); 
     scrollable.setMovementMethod(new ScrollingMovementMethod()); 
     ag = findViewById(R.id.view); 
     ag.text = scrollable; 
     ag = findViewById(R.id.view); 
     new Adventure(scrollable, this, ag); 
     Button buttonOne = (Button) findViewById(R.id.close); 
     buttonOne.setOnClickListener(new Button.OnClickListener() { 
      public void onClick(View v) { 
       ag.mainCharacter.go("North", ag.target); 
       ag.display("North", ag.target, ag.mainCharacter.place); 
      } 
     }); 

     Button buttonOne2 = (Button) findViewById(R.id.close2); 
     buttonOne2.setOnClickListener(new Button.OnClickListener() { 
      public void onClick(View v) { 
       ag.mainCharacter.go("East", ag.target); 
       ag.display("East", ag.target, ag.mainCharacter.place); 
      } 
     }); 

     Button buttonOne3 = (Button) findViewById(R.id.close3); 
     buttonOne3.setOnClickListener(new Button.OnClickListener() { 
      public void onClick(View v) { 
       ag.mainCharacter.go("South", ag.target); 
       ag.display("South", ag.target, ag.mainCharacter.place); 
      } 
     }); 

     Button buttonOne4 = (Button) findViewById(R.id.close4); 
     buttonOne4.setOnClickListener(new Button.OnClickListener() { 
      public void onClick(View v) { 
       ag.mainCharacter.go("West", ag.target); 
       ag.display("West", ag.target, ag.mainCharacter.place); 
      } 
     }); 

     Button buttonOne5 = (Button) findViewById(R.id.close5); 
     buttonOne5.setOnClickListener(new Button.OnClickListener() { 
      public void onClick(View v) { 
       ag.mainCharacter.go("Up", ag.target); 
       ag.display("Up", ag.target, ag.mainCharacter.place); 
      } 
     }); 

     Button buttonOne6 = (Button) findViewById(R.id.close6); 
     buttonOne6.setOnClickListener(new Button.OnClickListener() { 
      public void onClick(View v) { 
       ag.mainCharacter.go("Down", ag.target); 
       ag.display("Down", ag.target, ag.mainCharacter.place); 
      } 
     }); 

     Button buttonOne7 = (Button) findViewById(R.id.close7); 
     buttonOne7.setOnClickListener(new Button.OnClickListener() { 
      public void onClick(View v) { 
       ag.mainCharacter.say("Where is the key?", ag.target); 

       for (Iterator<Person> i = ag.persons.iterator(); i.hasNext();) { 
        Person item = i.next(); 
        if (item instanceof WalkingPerson) { 
         WalkingPerson item2 = (WalkingPerson) item; 
         item2.query(ag.mainCharacter, ag.target); 
        } 
       } 
      } 
     }); 


     Button buttonOne8 = (Button) findViewById(R.id.close7); 
     buttonOne7.setOnClickListener(new Button.OnClickListener() { 
      public void onClick(View v) { 



      } 
     }); 

     ag.mainCharacter.goTo("Dungeon", this); 
     ag.display("", this, ag.mainCharacter.place); 
    } 


    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 

     // Trigger the initial hide() shortly after the activity has been 
     // created, to briefly hint to the user that UI controls 
     // are available. 
     // delayedHide(100); 
    } 

    private void toggle() { 
     if (mVisible) { 
      hide(); 
     } else { 
      show(); 
     } 
    } 

    private void hide() { 
     // Hide UI first 
     ActionBar actionBar = getSupportActionBar(); 
     if (actionBar != null) { 
      actionBar.hide(); 
     } 
     mControlsView.setVisibility(View.GONE); 
     mVisible = false; 

     // Schedule a runnable to remove the status and navigation bar after a delay 
     mHideHandler.removeCallbacks(mShowPart2Runnable); 
     mHideHandler.postDelayed(mHidePart2Runnable, UI_ANIMATION_DELAY); 
    } 

    @SuppressLint("InlinedApi") 
    private void show() { 
     // Show the system bar 
     mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
       | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); 
     mVisible = true; 

     // Schedule a runnable to display UI elements after a delay 
     mHideHandler.removeCallbacks(mHidePart2Runnable); 
     mHideHandler.postDelayed(mShowPart2Runnable, UI_ANIMATION_DELAY); 
    } 

    /** 
    * Schedules a call to hide() in delay milliseconds, canceling any 
    * previously scheduled calls. 
    */ 
    private void delayedHide(int delayMillis) { 
     mHideHandler.removeCallbacks(mHideRunnable); 
     mHideHandler.postDelayed(mHideRunnable, delayMillis); 
    } 
} 

class PlaceView extends View { 
    public PlaceView(Context context, @Nullable AttributeSet attrs) { 
     super(context, attrs); 

     NBRSTEPS = 4;//difficulty; 
     heroName = "Jamie";//name; 
     target = (AdventureActivity) context; 

     this.cont = context; 
     x = new int[NBRSTEPS]; 
     y = new int[NBRSTEPS]; 
     this.target = target; 
     hero_positions = new int[NBRSTEPS]; 
     int resourceIdFalling = 0; 
     int resourceIdHero = 0; 

     falling = BitmapFactory.decodeResource(getResources(), resourceIdFalling); //load a falling image 
     hero = BitmapFactory.decodeResource(getResources(), resourceIdHero); //load a hero image 
    } 

    public Collection<Person> getPersons() { 
     return persons; 
    } 

    Person mainCharacter; 

    public void setPersons(Collection<Person> persons) { 
     this.persons = persons; 
    } 

    public void display(String s1, AdventureActivity target, Place p) { 
     setBackground(p.image); 
     target.scrollable.append("This place is called " + p.getName() + "."); 
     if(p.getName().equals("Heaven")) { 
      final Toast toast = Toast.makeText(target.ag.getContext(), "GAME OVER!\n", Toast.LENGTH_LONG);// duration); 
      toast.show(); 
     } 

    } 

    /** 
    * Persons at this Place. 
    */ 
    public Collection<Person> persons; 
    int NBRSTEPS; // number of discrete positions in the x-dimension; must be uneven 
    String heroName; 
    int[] x; // x-coordinates for falling objects 
    int[] y; // y-coordinates for falling objects 
    int[] hero_positions; // x-coordinates for hero 
    int ballW; // width of each falling object 
    int ballH; // height of ditto 
    Bitmap falling, hero; 

    Context cont; 
    TextView text; 
    AdventureActivity target; 



    // update the canvas in order to display the game action 
    @Override 
    public void onDraw(Canvas canvas) { 

     super.onDraw(canvas); 
     int xx = 200; 
     int yy = 0; 
     if (persons != null) { 
      synchronized (persons) { 
       Iterator<Person> iterate = persons.iterator(); 
       while (iterate.hasNext()) { 
        Person p = iterate.next(); 
        if (p.getImage() != 0) { 
         hero = BitmapFactory.decodeResource(getResources(), p.getImage()); //load a character image 
         // Draw the visible person's appearance 
         // g.drawImage(appearance, xx, 
         //   240 + yy - (appearance.getHeight(this) * 4)/5, 
         //   this); 
         canvas.drawBitmap(hero, xx, 0, null); //Draw the hero on the canvas. 

         // Draw the name 
         Paint paint = new Paint(); 
         paint.setStyle(Paint.Style.FILL); 

         canvas.save(); 
         // canvas.translate(100, 200); 
         paint.setStrokeWidth(1); 
         paint.setColor(Color.WHITE); 
         paint.setTextSize(50); 
         canvas.drawText(p.name, 0, 0, paint); 
         xx += 500; 
         yy = (int) (Math.random() * 20); 
        } 
       } 
      } 
     } 
     canvas.save(); //Save the position of the canvas. 
     canvas.restore(); 
     //Call the next frame. 
     invalidate(); 
    } 
} 

私はListViewコントロールを含めるためにXMLを使用して見つけることが、どのように私は在庫ボタンが押されたとき、それが示すことができますか?ListViewのすべての例

My XML layout is the following. 

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tableLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="10dip"> 

    <TableRow 
     android:id="@+id/tableRow1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 

     <Button 
      android:id="@+id/close" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:layout_alignParentBottom="true" 
      android:layout_column="0" 
      android:text="@string/north" /> 

     <Button 
      android:id="@+id/close2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:layout_alignParentBottom="true" 
      android:layout_column="1" 
      android:text="@string/east" /> 

     <Button 
      android:id="@+id/close3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:layout_alignParentBottom="true" 
      android:layout_column="2" 
      android:text="@string/south" /> 

     <Button 
      android:id="@+id/close4" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:layout_alignParentBottom="true" 
      android:layout_column="3" 
      android:text="@string/west" /> 

     <Button 
      android:id="@+id/close5" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:layout_alignParentBottom="true" 
      android:layout_column="4" 
      android:text="@string/up" /> 

     <Button 
      android:id="@+id/close6" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:layout_alignParentBottom="true" 
      android:layout_column="5" 
      android:text="@string/down" /> 



     <Button 
      android:id="@+id/close7" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:layout_alignParentBottom="true" 
      android:layout_column="6" 
      android:text="@string/say" /> 


     <Button 
      android:id="@+id/close8" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:layout_alignParentBottom="true" 
      android:layout_column="7" 
      android:text="@string/inventory" /> 
     <Button 
      android:id="@+id/close9" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:layout_alignParentBottom="true" 
      android:layout_column="8" 
      android:text="@string/take" /> 
     <Button 
      android:id="@+id/close10" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:layout_alignParentBottom="true" 
      android:layout_column="9" 
      android:text="@string/drop" /> 

    </TableRow> 
    <TableRow 
     android:id="@+id/tableRow2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <ScrollView 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_span="6" 
      android:layout_weight="1" 
      android:scrollbars="none"> 

      <TextView 
       android:id="@+id/textView1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentTop="true" 

       android:background="#FFFFFF" 
       android:gravity="bottom" 
       android:maxLines="2" 
       android:scrollbars="vertical" 
       android:textAppearance="?android:attr/textAppearanceLarge" 
       android:textColor="#000000" /> 

     </ScrollView> 

    </TableRow> 
    <TableRow 
     android:id="@+id/tableRow3" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1"> 

     <dev.game.adventure.PlaceView 
      android:id="@+id/view" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_span="6" 
      android:layout_weight="1" 
      android:adjustViewBounds="true" 
      android:background="#FFFFFF" 
      android:paddingLeft="10dp" 
      android:paddingRight="10dp" 
      android:paddingTop="10dp" /> 
    </TableRow> 
</TableLayout> 

私は答えから次のコードを試しましたが、何もしません。

ListView DynamicListView = new ListView(this); 

final String[] DynamicListElements = new String[] { 
     "Hello", 
     "Hi", 
     "Android Studio", 
     "Java" 
}; 

ArrayAdapter adapter = new ArrayAdapter (AdventureActivity.this, android.R.layout.simple_list_item_1, DynamicListElements); 
DynamicListView.setAdapter(adapter); 



TableRow element1 = (TableRow) findViewById(R.id.tableRow3); 
element1.addView(DynamicListView); 
+1

プログラムで作成してレイアウトに追加しましたか? –

+0

@ManjunathaMuniyappa私はそれを行う方法がわかりません。良い例はありません。または、サンプルのチュートリアルを見つけたら、私はそれを望みます。 –

+1

suer、私は例を追加しています –

答えて

2
//create a new layout or use if you have one 
LinearLayout linearLayout = new LinearLayout(this); 

//creating listview dynamically 
ListView DynamicListView = new ListView(this); 

//lit items. Hardcoded here, you can set the values dynamically using ArrayList 

final String[] DynamicListElements = new String[] {"Hello","Hi","Android Studio","Java"}; 

アクティビティ名の場合はMainActivityは、それに応じてそれを変更するよりも異なっています。この例では、MainActivity.thisを使用しました。

ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, DynamicListElements); 

DynamicListView.setAdapter(adapter); 

linearLayout.addView(DynamicListView); 

//this may not be needed if you are using exisitng layout 
this.setContentView(linearLayout, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 
+0

私は既存のTableLayoutを使用します。なぜそれが動作していないのか分かりません。ビューの半分を黒く塗りつぶします。 –

+1

プリントショットを共有してもよろしいですか? –

+0

私は調査結果を更新しました。 ListViewをTableLayoutとTableRowの両方に追加しようとしましたが、動作しませんでした。私は間違ったことをしなければならないと思うが、私は理解していない。 –

関連する問題