Ну, я пытаюсь объяснить. Я сделал приложение, в котором у меня есть список, в котором каждая строка имеет также две кнопки (я сделал это с другим вопросом, размещенным на этом сайте). Проблема заключается в следующем: Две кнопки - это «старт» и «остановка». Когда я нажимаю кнопку «Пуск», запускается служба, и когда я нажимаю кнопку «Стоп», эта служба должна останавливаться (я еще не реализовал эту услугу). Итак, когда я нажимаю кнопку «Пуск», я хотел бы скрыть кнопку «Пуск», таким образом, я знаю, что служба запущена. Как я могу это сделать? Кроме того, это может быть правильный выбор, реализующий сервис таким образом? Я выбрал эту идею, потому что мне нужно остановить службу, когда я решил остановить ее.Listview и кнопка скрыта
Код:
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//generate list
ArrayList<String> list = new ArrayList<String>();
list.add("item1");
list.add("item2");
//instantiate custom adapter
android.widget.ListAdapter adapter = new ListAdapter(this,0,list);
//handle listview and assign adapter
ListView lView = (ListView)findViewById(R.id.list_item);
lView.setAdapter(adapter);
}
}
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
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.sara.myapplication.MainActivity">
<ListView
android:id="@+id/list_item"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
row_item.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="Text"
android:id="@+id/list_item_string"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5pt"
android:layout_marginTop="2pt"
android:textSize="10pt"
android:layout_weight="0.49"/>
<Button
android:text="Start"
android:id="@+id/start_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:text="Stop"
android:id="@+id/stop_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/start_button"/>
</LinearLayout>
ListAdapter.java
public class ListAdapter extends ArrayAdapter<String> {
private ArrayList<String> list;
private int layout;
private Context context;
public ListAdapter(Context context, int resource, ArrayList<String> objects) {
super(context, resource, objects);
context = context;
layout = resource;
list = objects;
}
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater inflater = LayoutInflater.from(getContext());
view = inflater.inflate(R.layout.row_item, null);
}
//Handle TextView and display string from your list
TextView listItemText = (TextView)view.findViewById(R.id.list_item_string);
listItemText.setText(list.get(position));
//Handle buttons and add onClickListeners
Button deleteBtn = (Button)view.findViewById(R.id.stop_button);
Button addBtn = (Button)view.findViewById(R.id.start_button);
deleteBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "delete - Button was clicked for list item " + position, Toast.LENGTH_SHORT).show();
//do something
notifyDataSetChanged();
}
});
addBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "start - Button was clicked for list item " + position, Toast.LENGTH_SHORT).show();
notifyDataSetChanged();
}
});
return view;
}
}
использовать pojoclass поддерживать положение кнопки в и затем примените addBtn.setVisibility (View.Invisible) к вашей кнопке. – LoveAndroid
Почему бы не использовать один текст кнопки, как ** Запустить **, когда служба остановлена, и ** Остановить **, когда служба была запущена (даже если она была остановлена и даже когда она была запущена) может быть даже красным. Вероятно, вам нужно будет хранить текущее состояние где-нибудь или иметь какие-то средства для определения состояния службы (у вас могут быть одинаковые проблемы с двумя кнопками). – MikeT
. Вы должны поддерживать статус каждой кнопки запуска в режиме просмотра списка, а затем вы можете сделать это легко. Спасибо –