Как кодировать для представления списка в Android Studio вместо представления текста - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь разработать приложение для Android. В моем приложении я использую текстовое представление для отображения доступных устройств BLE. Но вместо просмотра текста я хочу использовать представление списка. Какие изменения необходимы в моем коде? Я путаюсь с тем, как использовать представление списка и различные адаптеры! Здесь я предоставляю свой код.

MainActivity

public class MainActivity extends AppCompatActivity {
     BluetoothManager btManager;
     BluetoothAdapter btAdapter;
     BluetoothLeScanner btScanner;
     Button startScanningButton;
     Button stopScanningButton;
     TextView peripheralTextView;
     private final static int REQUEST_ENABLE_BT = 1;
     private static final int PERMISSION_REQUEST_COARSE_LOCATION = 1;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         peripheralTextView = (TextView) findViewById  (R.id.PeripheralTextView);
         peripheralTextView.setMovementMethod(new ScrollingMovementMethod());
         startScanningButton = (Button) findViewById(R.id.StartScanButton);
          startScanningButton.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 startScanning();
             }
         });

         stopScanningButton = (Button) findViewById(R.id.StopScanButton);
         stopScanningButton.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 stopScanning();
             }
         });
         stopScanningButton.setVisibility(View.INVISIBLE);

         btManager = (BluetoothManager)getSystemService(Context.BLUETOOTH_SERVICE);
         btAdapter = btManager.getAdapter();
         btScanner = btAdapter.getBluetoothLeScanner();


         if (btAdapter != null && !btAdapter.isEnabled()) {
             Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
             startActivityForResult(enableIntent,REQUEST_ENABLE_BT);
         }


     }

     // Device scan callback.
     private ScanCallback leScanCallback = new ScanCallback() {
         @Override
         public void onScanResult(int callbackType, ScanResult result) {
             peripheralTextView.append("Device Name: " + result.getDevice().getName() + " rssi: " + result.getRssi() + "\n");
 // auto scroll for text view
  final int scrollAmount = peripheralTextView.getLayout  ().getLineTop (peripheralTextView.getLineCount())- peripheralTextView.getHeight();
             // if there is no need to scroll, scrollAmount will be <=0
             if (scrollAmount > 0)
                 peripheralTextView.scrollTo(0, scrollAmount);
         }
     };


     public void startScanning() {
         System.out.println("start scanning");
         peripheralTextView.setText("");
         startScanningButton.setVisibility(View.INVISIBLE);
         stopScanningButton.setVisibility(View.VISIBLE);
         AsyncTask.execute(new Runnable() {
             @Override
             public void run() {
                 btScanner.startScan(leScanCallback);
             }
         });
     }

     public void stopScanning() {
         System.out.println("stopping scanning");
         peripheralTextView.append("Stopped Scanning");
         startScanningButton.setVisibility(View.VISIBLE);
         stopScanningButton.setVisibility(View.INVISIBLE);
         AsyncTask.execute(new Runnable() {
             @Override
             public void run() {
                 btScanner.stopScan(leScanCallback);
             }
         });
     }
 }

activity_main.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:paddingBottom="@dimen/activity_vertical_margin"
     android:paddingLeft="@dimen/activity_horizontal_margin"
     android:paddingRight="@dimen/activity_horizontal_margin"
     android:paddingTop="@dimen/activity_vertical_margin"
     tools:context="com.example.nc.android.MainActivity">

     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="Hello Bluetooth Scanners!" />

     <Button
         android:layout_width="100dp"
         android:layout_height="50dp"
         android:text="Scan"
         android:id="@+id/StartScanButton"
         android:layout_marginTop="40dp"/>

     <Button
         android:layout_width="wrap_content"
         android:layout_height="50dp"
         android:text="Stop Scanning"
         android:id="@+id/StopScanButton"
         android:layout_marginTop="40dp"/>

     <TextView
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_marginTop="100dp"
         android:id="@+id/PeripheralTextView"
         android:scrollbars="vertical"
         android:maxLines="30" />

 </RelativeLayout>

1 Ответ

0 голосов
/ 23 января 2019
 public ArrayList<model_> countries_lang = new ArrayList<model_>();
 Adapter_search adapt;

в вашем последующем

  adapt = new Adapter_search(getActivity(), yourdata);

  lv.setAdapter(adapt);

Класс адаптера

public class Adapter_search extends BaseAdapter 

Context c;
ArrayList<model_> players;
CustomFilter filter;
ArrayList<model_> filterList;
SessionManager session;
boolean isSet;

Adapter_search myAdapter;

private int selectedPosition = 0;

public Adapter_search(Context ctx, ArrayList<model_> players) {
    // TODO Auto-generated constructor stub

    this.c = ctx;
    this.players = players;
    this.filterList = players;
    session = new SessionManager(c);
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return players.size();
}

@Override
public Object getItem(int pos) {
    // TODO Auto-generated method stub
    return players.get(pos);
}

@Override
public long getItemId(int pos) {
    // TODO Auto-generated method stub

   /* int itemID;

    // orig will be null only if we haven't filtered yet:
    if (players == null)
    {
        itemID = pos;
    }
    else
    {
        itemID = players.indexOf(filterList.get(pos));
    }
    return itemID;*/
    return players.indexOf(getItem(pos));
}

@Override
public View getView(final int pos, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub

    myAdapter = new Adapter_search(c, players);

    LayoutInflater inflater = (LayoutInflater) 
c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    if (convertView == null) {
        convertView = inflater.inflate(R.layout.search_popup, null);
    }

    TextView nameTxt = (TextView) convertView.findViewById(R.id.textView_titllename);
    final ImageView img = (ImageView) convertView.findViewById(R.id.tick);


    //SET DATA TO THEM
    nameTxt.setText(players.get(pos).getLangName());






    convertView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {



            notifyDataSetChanged();


            //  Toast.makeText(c, players.get(pos).getLangName() + "+" + 
players.get(pos).getid(), Toast.LENGTH_SHORT).show();




        }
    });

    return convertView;
}



}

}
...