Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.inadaydevelopment.myapp;
- import android.os.Bundle;
- import android.support.v7.app.AppCompatActivity;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.EditText;
- import android.widget.ListView;
- import android.widget.TextView;
- public class MainActivity extends AppCompatActivity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- ListView listView = (ListView) findViewById(android.R.id.list);
- listView.setAdapter(new MyAdapter(getLayoutInflater()));
- }
- public class MyAdapter extends BaseAdapter {
- private LayoutInflater layoutInflater;
- private final int minDeltaForReFocus = 300; // threshold in ms
- private long focusTime = 0; // time of last touch
- private View focusTarget = null;
- View.OnFocusChangeListener onFocusChangeListener = new View.OnFocusChangeListener() {
- @Override
- public void onFocusChange(View view, boolean hasFocus) {
- long t = System.currentTimeMillis();
- long delta = t - focusTime;
- if (hasFocus) { // gained focus
- if (delta > minDeltaForReFocus) {
- focusTime = t;
- focusTarget = view;
- }
- }
- else { // lost focus
- if (delta <= minDeltaForReFocus && view == focusTarget) {
- focusTarget.post(new Runnable() { // reset focus to target
- public void run() {
- Log.d("BA", "requesting focus");
- focusTarget.requestFocus();
- }
- });
- }
- }
- }
- };
- public MyAdapter(LayoutInflater inflater) {
- this.layoutInflater = inflater;
- }
- @Override
- public int getCount() {
- return 3;
- }
- @Override
- public Object getItem(int position) {
- return position;
- }
- @Override
- public long getItemId(int position) {
- return position;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- if (convertView == null) {
- convertView = layoutInflater.inflate(R.layout.cell_textfield, parent, false);
- }
- TextView label = (TextView) convertView.findViewById(R.id.textview1);
- EditText textfield = (EditText) convertView.findViewById(R.id.textview2);
- String text = String.format("Row %d", position);
- label.setText(text);
- textfield.setText(text);
- textfield.setOnFocusChangeListener(this.onFocusChangeListener);
- return convertView;
- }
- }
- }
- // ----------- R.layout.activity_main ---------------
- <?xml version="1.0" encoding="utf-8"?>
- <android.support.constraint.ConstraintLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context="com.inadaydevelopment.myapp.MainActivity">
- <LinearLayout
- android:focusable="true"
- android:focusableInTouchMode="true"
- android:layout_width="0px"
- android:layout_height="0px"/>
- <ListView
- android:id="@android:id/list"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:descendantFocusability="afterDescendants"
- >
- </ListView>
- </android.support.constraint.ConstraintLayout>
- // ----------- R.layout.cell_textfield ---------------
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="?attr/listPreferredItemHeight"
- android:paddingStart="?attr/listPreferredItemPaddingLeft"
- android:paddingEnd="?attr/listPreferredItemPaddingRight"
- >
- <TextView android:id="@+id/textview1"
- android:layout_height="match_parent"
- android:layout_width="80dp"
- android:layout_centerVertical="true"
- android:text="Title"
- />
- <EditText android:id="@+id/textview2"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_toEndOf="@id/textview1"
- android:layout_centerVertical="true"
- android:text="Detail"
- android:layout_marginStart="21dp"
- />
- </RelativeLayout>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement