簡體   English   中英

服務中的Google Glass LiveCard更新列表視圖

[英]Google Glass LiveCard update listview from Service

我有一個Google Glass LiveCard應用程序,其中后台服務從遠程URL提取數據。

我在LiveCard活動中添加了TextView和ListView:

<TextView
        android:id="@+id/home_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#fff"
        android:text="@string/hello_world" />
    <ListView
        android:id="@+id/order_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    </ListView>

我無法像處理TextView一樣從Service刷新ListView數據。 對於TextView,我使用以下方法:

remoteView.setTextViewText(R.id.home_text, "Hello world !");

在Activity onCreate方法中,我將適配器設置如下:

   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);  

      String[] OrdersArray = new String[];
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.order_list, android.R.id.text1, OrdersArray);
   }

有什么建議嗎? 提前致謝。

您可以在傳感器管理器的幫助下實現頭部可滾動列表視圖。 它計算您的頭部傾斜的角度,並同樣滾動列表視圖。 在玻璃應用程序中,這比使用按鈕甚至語音命令更為方便。

這是該代碼段:

public class MainActivity extends Activity implements SensorEventListener {

private SensorManager mSensorManager;
private Sensor mOrientation;

ListView listView ;
ArrayAdapter<String> adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    mOrientation = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
    mSensorManager.registerListener(this, mOrientation, SensorManager.SENSOR_DELAY_GAME);

    // Get ListView object from xml
    listView = (ListView) findViewById(R.id.list);

    // Defined Array values to show in ListView
    String[] values = new String[] { "Glass App list View", 
            "Using Adapter to inflate",
            "Basic Coding example",
            "How was your day", 
            "I love coding in Android", 
            "List Views all over the place", 
            "Services to fetch the data", 
            "And bind up in a list view" 
    };



    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, values);

    // Assign adapter to ListView
    listView.setAdapter(adapter); 
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {}

@Override
public void onSensorChanged(SensorEvent event) {
    /* *** need only pitch angle (head bouncing backwards and forward)*** */
    float pitch_angle = event.values[1];

    /* *** first interval head angle degrees *** */
    int top_head_angle_limit = -110;
    int bot_head_angle_limit = -70;

    /* *** second interval *** */
    int top_list_item_limit = 0;
    int bot_list_item_limit = adapter.getCount();

    /* *** linear mapping/ map interval [-110,-70](head angle degrees) -> [0, 8] list items *** */
    /* *** linear mapping formula: (val - A)*(b-a)/(B-A) + a *** */
    if(pitch_angle >= top_head_angle_limit && pitch_angle <= bot_head_angle_limit){
        int selection = (int) ((pitch_angle - top_head_angle_limit)*(bot_list_item_limit - top_list_item_limit)/(bot_head_angle_limit - top_head_angle_limit) + top_list_item_limit);
        Log.e("selection: ", String.valueOf(selection));
        listView.setSelection(selection);
    }
}

有關更詳細的代碼實現,請參閱此Google Glass應用程序代碼。

對於列表視圖: https : //github.com/pscholl/glass_snippets/blob/master/lib/src/main/java/de/tud/ess/HeadListView.java

對於滾動視圖: https : //github.com/pscholl/glass_snippets/blob/master/lib/src/main/java/de/tud/ess/HeadScrollView.java

希望這會有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM