+67
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
public final class SomeActivity extends Activity {
@Override
protected Dialog onCreateDialog(int id) {
Dialog dialog = null;
if (id == DialogGenerator.SETTINGS_DIALOG) {
dialog = mDialogGenerator.createSettingsDialog();
} {
dialog = super.onCreateDialog(id);
}
return dialog;
}
@Override
protected void onPrepareDialog(int id, Dialog dialog) {
super.onPrepareDialog(id, dialog);
if (id == DialogGenerator.SETTINGS_DIALOG) {
mDialogGenerator.prepareSettingsDialog((AlertDialog) dialog, someBoolValue, someObjectValue);
}
}
}
public final class DialogGenerator {
public Dialog createSettingsDialog() {
int dialogId = SETTINGS_DIALOG;
int titleId = R.string.settingsTitle;
String[] itemsArray = getStringArray(R.array.settings);
ThreeTypeOptionsAdapter adapter = new ThreeTypeOptionsAdapter(mControllerAsActivity, itemsArray,
mCheckableOptions, mTwoTextOptions);
AlertDialogCallback dialogCallback = new AlertDialogCallback(mControllerAsDialogHost, dialogId);
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(mControllerAsActivity);
dialogBuilder.setTitle(titleId);
// костыль
dialogBuilder.setSingleChoiceItems(itemsArray, 0, null);
// конец костыля
dialogBuilder.setAdapter(adapter, dialogCallback);
AlertDialog dialog = dialogBuilder.create();
setMainListenersOnDialog(dialog);
dialog.getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
return dialog;
}
public void prepareSettingsDialog(AlertDialog dialog, boolean someBoolValue, String someStringValue) {
//костыль
ListView dialogList = dialog.getListView();
dialogList.clearChoices();
dialogList.setItemChecked(POSITION_FOR_BOOL, someBoolValue);
//конец костыля
ThreeTypeOptionsAdapter adapter = (ThreeTypeOptionsAdapter) dialogList.getAdapter();
adapter.setAdditionalValue(POSITION_FOR_STRING, someStringValue);
}
}
Задача: показать диалог, внутри которого есть 3 типа ячеек: выделяемые с чекбоксом справа, невыделяемые с дополнительной надписью справа, обычные невыделяемые.
Примерно так:
Use GPS checkbox
Selected country Russia
Launch some activity
В комментах к методам я описал костыль:
Здравствуйте, дорогие друзья. Сегодня мы с вами поговорим об уникальном виде животных, которых открыли только в конце XX века. Это, дорогие друзья, Ява-обезьяны. Давайте дружно откроем сырцы Андроид-СДК, а именно - класс com.android.internal.app.AlertController .AlertParams - и метод createListView(AlertController). Видите, одна обезьяна решила, что нам будет удобней, если диалог автоматом задисмиссится, когда мы щёлкнем по элементу списка в CHOICE_MODE_NONE, и OnClickListener будет не null? А теперь давайте перейдём в android.app.AlertDialog.Builder. Видите, там другая обезьяна решила, что для multi-choice списка нам не потребуется хитроумный адаптер? Поэтому, дорогие друзья, когда мы поставили кастомный адаптер (setAdapter()) и сопроводили его слушателем, то какой бы мы choice mode не ставили после AlertDialog.Builder.create(), диалог дисмиссился. Поэтому, дорогие друзья, пришлось пойти на хитрость и вначале установить single choice (чтобы флаг mIsSingleChoice стал true), а потом уже ставить адаптер.
QuickNick,
20 Февраля 2013
+65
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
package com.example.testing;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Govnisti_Diavol,
17 Февраля 2013
+77
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
byte[] buffer = new byte[BUFFER_SIZE];
ReadState readState = ReadState.BOUNDARY;
InputStream input = request.getInputStream();
int read = input.read(buffer);
int pos = 0;
// This is a fail-safe to prevent infinite loops from occurring in some environments
int loopCounter = 20;
while (read > 0 && loopCounter > 0) {
for (int i = 0; i < read; i++) {
switch (readState) {
// Pos is calculated...
case BOUNDARY:
case HEADERS:
case DATA:
}
}
if (pos < read) {
// move the bytes that weren't read to the start of the buffer
int bytesNotRead = read - pos;
System.arraycopy(buffer, pos, buffer, 0, bytesNotRead);
read = input.read(buffer, bytesNotRead, buffer.length - bytesNotRead);
// Decrement loopCounter if no data was readable
if (read == 0) {
loopCounter--;
}
read += bytesNotRead;
} else {
read = input.read(buffer);
}
}
Кусок исходников из недров JBoss Seam(наткнулся профайлером).
Пацаны пофиксили багу с бесконечным циклом и 100 утилизацией CPU.
Весь класс:
https://www.java2s.com/Open-Source/Java/JBoss/jboss-seam-2.2.0/org/jboss/seam/web/MultipartRequestImpl.java.htm
Версия с бесконечным циклом:
http://www.docjar.com/html/api/org/jboss/seam/web/MultipartRequestImpl.java.html
psvm,
16 Февраля 2013
+74
- 1
- 2
- 3
- 4
- 5
- 6
private String stateChangedReason;
...
if (stateChangedReason != null && stateChangedReason instanceof String) {
dealerManageInfo.setChangeStateReason(stateChangedReason.toString());
}
amarfey,
15 Февраля 2013
+121
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
public class DefaultQueryEngine implements QueryEngine {
private static volatile QueryEngine DEFAULT;
public static QueryEngine getDefault() {
if (DEFAULT == null) {
DEFAULT = new DefaultQueryEngine(new DefaultEvaluatorFactory(CollQueryTemplates.DEFAULT));
}
return DEFAULT;
}
https://github.com/mysema/querydsl/blob/master/querydsl-collections/src/main/java/com/mysema/query/collections/DefaultQueryEngine.java
Ехал дефолт через дефолт...
someone,
15 Февраля 2013
+71
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
private static final int IDX_OBJECT = 0;
private static final String PARTY_ACCOUNT_BALANCE_QUERIES = "Select party.id from Party party WHERE party.TaxID='615100175';Select account.id from PaymentAccount account, Party party WHERE party.TaxID='615100175';Select balance.id from PaymentBalance balance WHERE balance.BalanceType='10000';";
private static final int queryAmount = 3;
public void createPaymentAccountUpdate() {
String[] QUERY = new String[queryAmount];
int startIndex = 0, endIndex=0;
IRecordset [] rs=null;
for (int i = 0; i < queryAmount; i++) {
endIndex = PARTY_ACCOUNT_BALANCE_QUERIES.indexOf(';', startIndex);
QUERY[i] = PARTY_ACCOUNT_BALANCE_QUERIES.substring(startIndex, endIndex);
startIndex = endIndex + 1;
}
for (int i = 0; i < queryAmount; i++) {
rs[i] = s_mgr.newQuery().execute(QUERY[i].toString());
}
if (rs[0].moveNext()) {
IParty party = (IParty)rs[0].valueFromIndex(IDX_OBJECT);
if (rs[1].moveNext()) {
IPaymentAccount pa = (IPaymentAccount) rs[1].valueFromIndex(IDX_OBJECT);
pa.setParty(party);
}
if (rs[2].moveNext()) {
IPaymentBalance pb = (IPaymentBalance) rs[2].valueFromIndex(IDX_OBJECT);
pa.setBalance(pb);
}
pa.setComment("Test account update created");
pa.Save();
}
}
Лучше уж никаких тестов, чем такие
askell,
14 Февраля 2013
+81
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
public static void trustAllHttpsCertificates() {
// Is the deprecated protocol setted?
if (isDeprecatedSSLProtocol()) {
__trustAllHttpsCertificates();
} else {
_trustAllHttpsCertificates();
} // else
} // trustAllHttpsCertificates
Captain Obvious поучаствовал?
P.S. Похоже, это писал старый программист, закалённый в борьбе с VisualBasic.
wissenstein,
14 Февраля 2013
+72
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
public class Test {
public static final int a;
static {
System.out.println(Main.a);
a = 42;
System.out.println(Main.a);
}
}
javac такой javac...
Так видит проблему: http://ideone.com/jhPN5X
А вот так - нет: http://ideone.com/qAMIvH
bormand,
14 Февраля 2013
+79
- 1
- 2
- 3
public class StringToObjectMap extends HashMap<String, Object> {
public StringToObjectMap(Map<? extends String, ? extends Object> map)
Нет слов выразить мою печаль.
nafania217518,
13 Февраля 2013
+68
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
@Override
public void execute() {
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (ClientListener listener : listeners) {
listener.disconnected(this);
}
}
Lure Of Chaos,
12 Февраля 2013