GDK: отображение списка с использованием пользовательского макета/настраиваемого статического макета карты/списка в живых картах

Три вопроса здесь в основном:

<сильный>1. Я пытаюсь отобразить список с моим собственным макетом внутри действия. Для этого сначала я создаю набор статических карточек, а затем с помощью onItemClickListener создаю намерение и запускаю активность. Но это, кажется, не работает. Здесь два вида деятельности. Одним из них является CradsScrollActivity(Working) со статическими картами, а следующим — ListCardsScrollActivity с моим пользовательским макетом. CardsScrollActivity вызывает ListCardsScrollActivity (со списком), но это не работает, но logcat говорит, что он запустил действие и отобразил его. Вот мой CardsScrollActivity

public class CardsScrollActivity extends Activity {

    private List<Card> mCards;
    private CardScrollView mCardScrollView;
    private List<CardData> mCardsData;

    private static final String TAG = "CardScrollActivity";

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

        createSomeCards();

        mCardScrollView = new CardScrollView(this);
        TestCardScrollAdapter adapter = new TestCardScrollAdapter(mCards, mCardsData, this);
        mCardScrollView.setAdapter(adapter);
        mCardScrollView.activate();




        mCardScrollView.setOnItemClickListener(new OnItemClickListener()
        {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int pos,
                    long id) {
                Log.d(TAG, "item tapped: "+pos); //working ! 
                Intent i = new Intent(CardsScrollActivity.this, ListCardsScrollActivity.class);

                startActivity(i);
            }

        });

        setContentView(mCardScrollView);
    }




      private void createSomeCards()
      {
            mCardsData = new ArrayList<CardData>();
        mCards = new ArrayList<Card>();
        Card card;  
        card = new Card(this);
        mCardsData.add(new CardData("Welcome","Swipe To Enter"));
        mCards.add(card);  
        card = new Card(this);
            card.setImageLayout(Card.ImageLayout.FULL);
            card.addImage(R.drawable.img1);
            mCardsData.add(new CardData("Background Image","Step 1"));
            mCards.add(card);
            card = new Card(this);
            card.setImageLayout(Card.ImageLayout.LEFT);
            card.addImage(R.drawable.img1);
            card.addImage(R.drawable.img2);
            mCardsData.add(new CardData("Step 1 and Step 2","End Of Cards"));
            mCards.add(card);
      }}

Как вы видите, onClickListener работает нормально, он получает этот вызов, но часть намерения не работает. Вот моя ListCardsScrollActivity

public class ListCardsScrollActivity extends Activity {



    private static final String TAG = "ListCardsScrollActivity";

    private  List<String> mList ;

    private ListView mListView;

    private TestListAdapter mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list_view);
        populateArrayList();
        mListView = (ListView)findViewById(R.id.listView);
        mAdapter = new TestListAdapter(this,R.layout.list_element,mList);
        mListView.setAdapter(mAdapter);
    }

    private void populateArrayList()
    {
        mList = new ArrayList<String>();
        mList.add("Item 1");
        mList.add("Item 2");
        mList.add("Item 3");
        mList.add("Item 4");
        mList.add("Item 5");
        mListView = (ListView)findViewById(R.id.listView);
        mAdapter = new TestListAdapter(this,R.layout.list_element,mList);
        mListView.setAdapter(mAdapter);
    }

Можно ли как-то создать свои собственные статические карточки с пользовательскими макетами?

Должны ли живые карточки публиковаться в менеджере временной шкалы всегда или это можно сделать в нашем приложении для стеклянной посуды? Было бы здорово, если бы кто-нибудь поделился примером реализации представления списка в живых карточках.

Заранее спасибо.


person uLYsseus    schedule 04.03.2014    source источник
comment
пожалуйста, также дайте мне знать, если есть какая-либо альтернатива для просмотра списка... это могло бы помочь... любые предложения... что-нибудь... было бы полезно...   -  person uLYsseus    schedule 05.03.2014


Ответы (1)


Хорошо, несмотря на страх, что меня проголосуют за этот действительно грязный способ, я хотел бы поделиться этим как ответом, чтобы любой мог улучшить его или придумать намного лучшую реализацию:

  1. Поскольку я просто играю со стеклом, я сделал следующее, теперь я делаю все это программно, так что это динамично. Для справки, мой так называемый макет списка будет таким:

    <Button 
        android:id="@+id/btn1"
        android:text="Btn 1"
        android:background="#CD3333"
        android:focusable="true"
        android:textSize="14sp"
        android:textStyle="bold"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1.0"/>
    <View
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="#000000"/>
     <Button 
        android:id="@+id/btn2"
        android:text="Btn 2"
        android:textStyle="bold"
        android:textSize="14sp"
        android:background="#CD3333"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1.0"/>
      <View
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="#000000"/>
      <Button 
        android:id="@+id/btn3"
        android:text="Btn 3"
        android:textStyle="bold"
        android:textSize="14sp"
        android:background="#CD3333"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1.0"/>
       <View
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="#000000"/>
       <Button 
        android:id="@+id/btn4"
        android:text="Btn 4"
        android:background="#CD3333"
        android:textStyle="bold"
        android:textSize="14sp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1.0"/>
        <View
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="#000000"/>
        <Button 
        android:id="@+id/btn5"
        android:text="Btn 5"
        android:textSize="14sp"
        android:textStyle="bold"
        android:background="#CD3333"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1.0"/>
    

and in my Activity I would do this:

 public class ButtonListActivity extends Activity implements View.OnFocusChangeListener {

        public static final String TAG = "ButtonListActivity";

        Button mButton1;
        Button mButton2;
        Button mButton3;
        Button mButton4;
        Button mButton5;

        Bundle extras;

        ArrayList<String> list;


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

            setContentView(R.layout.list_template);

            list = new ArrayList<String>();


            mButton1 = (Button)findViewById(R.id.btn1);
            mButton2 = (Button)findViewById(R.id.btn2);
            mButton3 = (Button)findViewById(R.id.btn3);
            mButton4 = (Button)findViewById(R.id.btn4);
            mButton5 = (Button)findViewById(R.id.btn5);


            extras = getIntent().getExtras();

            if(extras!=null)
            {
              list = extras.getStringArrayList("list"); 

            }

            mButton1.setText(list.get(0));
            mButton2.setText(list.get(1));
            mButton3.setText(list.get(2));
            mButton4.setText(list.get(3));
            mButton5.setText(list.get(4));


            mButton5.setFocusableInTouchMode(true);
            mButton5.setOnFocusChangeListener(this);

            mButton4.setFocusableInTouchMode(true);
            mButton4.setOnFocusChangeListener(this);

            mButton3.setFocusableInTouchMode(true);
            mButton3.setOnFocusChangeListener(this);

            mButton2.setFocusableInTouchMode(true);
            mButton2.setOnFocusChangeListener(this);

            mButton1.setFocusableInTouchMode(true);
            mButton1.setOnFocusChangeListener(this);
        }


        @Override
        public void onFocusChange(View v, boolean hasFocus) {

           if(v.hasFocus()) 
            v.setBackgroundColor(Color.parseColor("#0EBFE9"));
           else
               v.setBackgroundColor(Color.parseColor("#CD3333"));
        }
    }

Таким образом, фактический вывод будет отображаться в виде списка с оранжевым фоном, и слушатель поможет вам сделать выбор, когда вы будете перемещаться вверх и вниз по списку. Элементы списка установлены с дополнительными намерениями, которые я получаю. В данном случае это список массивов строк. Таким образом, конечный продукт представляет собой список, похожий на макет.

  1. Я решил это, используя стандартные макеты Android, более или менее похожие на «погружение». Исходный уровень: не использовать карты

  2. Это скорее комментарий, чем ответ, пожалуйста, поправьте меня, если я ошибаюсь, предполагается, что живые карты должны быть переданы диспетчеру временной шкалы, а для другой половины вопроса я не видел пример низкочастотных живых карт с использованием упомянутых представлений. здесь:

https://developers.google.com/glass/develop/gdk/ui/live-cards

person uLYsseus    schedule 12.03.2014
comment
еще одна вещь, весь ответ на первый вопрос можно легко запрограммировать так, чтобы он предлагал динамическую визуализацию, а не зависел от статического макета..... - person uLYsseus; 12.03.2014